2011-11-06 3 views
0

J'essaye d'obtenir le travail suivant de Javascript (il devrait être un aperçu incorporé de formstack.com qui montre des jours spécifiques). Cependant, quand j'essaie de voir tout ce que je suis affiché est la chaîne (sans les guillemets) "');}" Qu'est-ce qui ne va pas?Pourquoi document.write ("...</script>") casse mon code?

<head> 
<script type="text/javascript"> 

var theDate = new Date(); 
var dayOfWeek = theDate.getUTCDay(); 

// Returns true if the restaurant is open 
function isOpen() 
{ 
    //I'll fill this in later, for now, return true 
    return true; 
} 
</script> 

</head><body> 
<script type = "text/javascript"> 
if(isOpen()) 
{ 
document.write('<script type="text/javascript" src="http://www.formstack.com/forms/js.php?1134414-uqmj2UXxEw-v2"></script>'); 
} 
</script> 
</body> 
+3

pas le titre de question la plus descriptive. .. ': /' –

+0

Où est votre tag doctype et html? – Shomz

+0

Cela fonctionne: http://jsfiddle.net/wYrze/1/ –

Répondre

2

Ne pas avoir une étiquette </script> dans votre chaîne, qui se termine la balise de script.

document.write('<scr'+'ipt type="text/javascript" src="http://www.formstack.com/forms/js.php?1134414-uqmj2UXxEw-v2"></scr'+'ipt>'); 
+0

Alors pourquoi tu briser la partie '

+0

@JaredFarrish: Juste pour être du bon côté. Cela fonctionne simplement parce que '' n'est pas interprété comme une balise de fin pour le script. – Guffa

+0

Je me demandais juste ... Pourquoi JS interprète-t-il une balise de script dans une chaîne comme la balise de fin de l'instruction d'appel? (C'est ce que je pense que vous dites, n'est-ce pas?) –

0

J'ai entendu des histoires de javascript à défaut d'exécuter l'intérieur document.write ... essayez le découper:

document.write("script type = " + "text/javascript" + "src='http://www.formstack.com/forms/js.php?1134414-uqmj2UXxEw-v2'>" + "/script"); 

(plus et moins de signes enlevés, vous devez savoir où mettre eux)

+2

"Vous devriez savoir où les mettre" - Huh? –

2

Vous ne pouvez pas avoir une chaîne contenant '</script>' dans un élément SCRIPT. Envisagez de charger des scripts supplémentaires comme suit:

var script = document.createElement('script'); 
script.src = 'http://www.formstack.com/forms/js.php?1134414-uqmj2UXxEw-v2'; 
document.body.appendChild(script); 

Votre bibliothèque JavaScript préférée contient probablement une fonction dédiée à cet effet. Par exemple, j'utiliser jQuery, où il est fait comme ceci:

$.getScript('http://www.formstack.com/forms/js.php?1134414-uqmj2UXxEw-v2'); 
-1

Je me demande si le/de est vu comme caractère d'échappement. Quelque chose que vous pouvez essayer est

Chaîne s = @ "...." où .... est le texte.

Le @ dit au compilateur de traiter tout « est comme un littéral. Je sais que cela fonctionne dans les deux C# et Java. Je ne suis pas sûr à 100% javascript.