60 votes

Sources communes de chaînes littérales non terminées

J'essaie de déboguer un script JavaScript qui est lu dans une extension Firefox et exécuté. Je ne peux voir les erreurs que via la console Firebug (mon code est invisible pour Firebug), et il signale un "littéral de chaîne non terminé".

J'ai vérifié la ligne et les lignes qui l'entourent et tout semble correct - les parenthèses, les accolades et les guillemets sont équilibrés, etc. Quelles sont les autres causes possibles que je devrais rechercher ?

4 votes

Pourquoi marquer cette page comme un doublon ? Cette question a -2 votes et n'est pas vraiment la même question. On dirait que quelqu'un n'avait rien d'autre à faire.

73voto

VoY Points 1715

La plupart des navigateurs semblent avoir des problèmes avec ce type de code :

var foo = "</script>";

Dans Firefox, Opera et IE8, cela entraîne une erreur de littéral de chaîne non terminé. Cela peut être assez désagréable lors de la sérialisation de code html qui inclut des scripts.

19 votes

C'est la cause de mon erreur, même si le script a passé JSLint. J'ai remplacé "</script" par "</scr "+"ipt>" et cela a réglé le problème.

5 votes

Ugh. Y a-t-il une raison derrière tout ça ?

12 votes

Je n'arrive pas à y croire, ça a réglé le problème. Je n'aurais jamais deviné ça en un million d'années. :(

61voto

jamtoday Points 1811

Recherchez les ruptures de ligne ! Elles en sont souvent la cause.

1 votes

Je suis d'accord - je suis tombé sur ce site en essayant de résoudre mon problème, et tout ce que j'avais à faire était de dépouiller mon texte.

2 votes

Vous en connaissez la raison ?

0 votes

Ça a réglé le problème pour moi, bien vu.

26voto

PJ Brunet Points 640

Je voterais pour la réponse de Jamtoday si j'en avais la "réputation".

Si vos données arrivent par le biais de PHP, ceci peut vous aider.

$str = str_replace(array("\r", "\n"), '', $str);

1 votes

Pour votre information, vous ne votez pas "pour" une seule et unique réponse sur SO. Upvotez/downvotez toutes les réponses comme bon vous semble.

1 votes

J'ai réglé mon problème - j'ai voté pour ! Merci !

1 votes

Cela a également réglé mon problème, dommage que je ne comprenne pas. pourquoi .

21voto

Queue Points 170

Je viens de découvrir que "<\/script>" semble fonctionner aussi bien que "</scr"+"ipt>" .

8voto

Andrew Hedges Points 11496

Vous pouvez essayer d'exécuter le script à travers JSLint .

0 votes

J'ai essayé. La sortie est trop bruyante. Trop de détails de formatage, et je n'ai rien vu qui puisse faire que le script ne s'exécute pas.

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