12 votes

Que dois-je faire exactement à l'intérieur d'un élément `script` ?

Quelles sont les parties du code JavaScript que je dois échapper à l'intérieur d'un fichier script dans une page HTML ? Est-ce que <>& assez ou trop ?

[EDIT] Ceci est lié à ce bogue : http://code.google.com/p/rendersnake/issues/detail?id=15#c6 commentaire n°6

14voto

Delan Azabani Points 33013

En HTML (et en XHTML si vous êtes un personne malveillante qui envoie vos pages XHTML en tant que text/html ), script Les balises sont #CDATA Par conséquent, la seule chose que vous ne devriez pas avoir dans le contenu est </script> car c'est tout ce que l'analyseur syntaxique recherche pour signaler la fin de la balise. N'échappez rien ; assurez-vous simplement que vous n'avez pas de </script> dans le contenu de la balise. Par exemple, si vous avez une chaîne de caractères avec une balise script, séparez-la :

var a = '</scr' + 'ipt>';

En XHTML, envoyé comme application/xhtml+xml , script Les balises sont #PCDATA et donc d'échapper < y & est nécessaire, à moins que vous ne puissiez utiliser un <![CDATA[ ... ]]> pour passer à #CDATA mais dans ce cas, rappelez-vous que vous ne pouvez pas avoir de mode d'analyse ]]> dans le contenu de votre balise.

0voto

Will Martin Points 2184

En général, la seule chose à laquelle j'échappe est le / dans les balises de fermeture. Ainsi :

var msg = "<p>Do you <em>really<\/em> think so, Miss Worthington?<\/p>";

Pour le reste, je me contente de commenter l'ensemble :

<script>
<!--
var msg = "<p>Do you <em>really<\/em> think so, Miss Worthington?<\/p>";
-->
</script>

Le commentaire se charge des balises d'ouverture HTML.

-2voto

Raze Points 1304

Les caractères échappés <, > et & ne fonctionnent pas avec de nombreux navigateurs. Il est suffisant de tout placer dans une section CDATA. Veuillez noter que la section CDATA elle-même devra se trouver dans un commentaire JavaScript pour que cela fonctionne avec tous les navigateurs.

<script>
// <![CDATA[
 script here
// ]]>
</script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X