2010-09-01 5 views
2

Ce script fonctionne correctement, sauf si le fichier inclus contient javascript, alors il rompt avec l'erreur littérale "chaîne non terminée". Supprimer des espaces et des sauts de ligne ne résout pas le problème.Code Javascript, littéral de chaîne non terminé avec javascript inclus

<script type="text/javascript"> 
var myArray = [ 
'url', 
'url2', 
'url3', 
'url4', 
'url5', 
]; 
var i, numDomains = myArray.length, found = false; 
for (i = 0; i < numDomains; i++) { 
if (document.referrer.indexOf(myArray[i]) > -1) { 
found = true; 
} 
} 
document.write((found ? '<?php include("file1.php"); ?>' : '<?php include("file2.php"); ?>')); 
</script> 

Une bonne solution serait là où le fichier inclus peut être n'importe quel fichier html normal.

C'est la sortie du fichier incriminé:

<!-- google_ad_client = "pub-0705348955426556";/* ORG 468x60 */ google_ad_slot =  "2106718798";google_ad_width = 468;google_ad_height = 60; 
//--> 
</script> 
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
</script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></scri 
+7

Juste une note - Vous avez une virgule supplémentaire après « url5 » – Marko

+0

@Marko, je crois que est en fait admis, au moins dans certains navigateurs. Cela peut parfois faciliter les choses. – MatrixFrog

+4

@MatrixFrog IE va barf dessus –

Répondre

1

Supprimer la virgule dernière de cette ligne:

var myArray = [ 'url', 'url2', 'url3', 'url4', 'url5', ]; 
/*             ^*/ 
+0

Bien qu'il devrait le faire, ce n'est pas la cause de l'erreur –

+2

Merci pour couper Je n'ai pas posté mon commentaire en guise de réponse puisqu'il mentionne que lorsque le fichier .php contient du javascript, c'est à ce moment là que le script se casse ... donc je me suis dit que ce n'était pas lié au tableau – Marko

+0

astuce, il se casse toujours, même avec la virgule redondante supprimée – Rhys

3

Si file1.php ou file2.php quoi que ce soit de sortie avec des personnages un-échappé ' ou les sauts de ligne, Cela causerait le message que vous recevez.

Essayez de supprimer tous les sauts de ligne à partir du fichier incriminé, sa sortie ressemble à ceci:

<!-- google_ad_client = "pub-0705348955426556";/* ORG 468x60 */ google_ad_slot = "2106718798";google_ad_width = 468;google_ad_height = 60; --><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script<script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"> 
+1

include() ne renvoie pas le code évalué du fichier, donc addslashes est hors de question, sauf si vous parlez de l'utiliser avec les fonctions de contrôle de sortie ob _ *() – w35l3y

0

S'il y a des sauts de ligne dans les fichiers inclus, qui provoque une erreur. Par exemple:

var a = "abc 
adada"; // may cause error 
Questions connexes