Sources communes de chaîne non-bromée literal [duplicate]

cette question a déjà une réponse ici:

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 (my code is invisible to Firebug), et il rapporte une " chaîne de caractères littérale."

j'ai vérifié la ligne et les lignes autour de lui et tout semble bien-parenthèses, accolades, et des citations sont équilibrées, etc. Quelles sont les autres causes possibles que je devrais chercher?

47
demandé sur Brock Adams 2008-10-23 01:09:18
la source

19 ответов

la plupart des navigateurs semblent avoir des problèmes avec le code comme ceci:

var foo = "</script>";

Dans Firefox, Opera et IE8 il en résulte une non littéral de chaîne d'erreur. Peut être assez désagréable lors de la sérialisation du code html qui inclut des scripts.

56
répondu VoY 2009-09-03 16:32:02
la source

cherchez linebreaks! Ceux-ci sont souvent la cause.

55
répondu jamtoday 2008-12-23 10:39:52
la source

je voterais pour la réponse de jamtoday si j'avais la "réputation

si vos données viennent par PHP, cela pourrait aider

$str = str_replace(array("\r", "\n"), '', $str);
23
répondu PJ Brunet 2011-05-07 06:59:23
la source

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

18
répondu Queue 2011-09-14 22:02:08
la source

vous pourriez essayer d'exécuter le script via JSLint .

8
répondu Andrew Hedges 2008-10-23 01:30:35
la source

échappez simplement à vos fermetures d'étiquettes ou utilisez le code ascii

ie

<\/script>

ie

<&#47;script>
7
répondu Brian 2011-12-31 01:51:44
la source

si vous avez fait n'importe quel couper/coller: certains surligneurs de syntaxe en ligne mangle des guillemets simples et doubles, les transformant en paires de guillemets formatés (paires d'ouverture et de fermeture appariées). (quoique je n'en trouve des exemples dès maintenant)... Donc, cela implique de frapper commande - + à quelques reprises et en regardant votre citation des caractères

essayez une police différente ? en outre, différents éditeurs et IDEs utilisent différents tokenizers et les règles de surlignage, et JS est l'un des plus langues dynamiques à analyser, alors essayez d'ouvrir le fichier dans emacs, vim, gedit (avec des plugins JS)... Si vous avez de la chance, l'un d'eux affichera une longue chaîne mauve courant à la fin du fichier.

4
répondu Gene T 2017-05-23 14:54:55
la source

recherchez une chaîne de caractères qui contient un qoute simple non enregistré qui peut être inséré par un code côté serveur.

4
répondu Manu 2015-11-11 16:44:25
la source

avez-vous échappé à vos slashs avant( / )? J'ai eu des problèmes avec ceux-là avant

2
répondu meouw 2008-12-23 13:34:26
la source

avez-vous essayé Chromebug ? C'est le coupe-feu pour les extensions.

1
répondu Álvaro González 2010-03-31 18:33:18
la source

j'ai eu des problèmes avec les citations à l'angle dans le passé ( ‘ ) généralement à partir de la copie et collage à partir de mots. Les remplacer par des guillemets simples réguliers ( ' ) fait l'affaire.

1
répondu cbaigorri 2010-05-27 20:57:22
la source

aussi, gardez à l'esprit que %0A est le caractère URL de linefeed encodé. Il m'a fallu du temps pour trouver où il y avait un fil dans mon code offensant.

1
répondu Tyndareus 2011-07-08 16:52:38
la source

si rien n'aide, cherchez des caractères uni-code comme

\u2028

cela peut briser votre chaîne sur plus d'une ligne et jeter cette erreur

1
répondu Predte4a 2012-03-13 20:34:47
la source

peut-être que c'est parce que vous avez une rupture de ligne dans votre code PHP. Si vous avez besoin de sauts de ligne dans votre message de fenêtre d'alerte, incluez-le comme une syntaxe échappée à la fin de chaque ligne dans votre code PHP. Je le fais habituellement de la façon suivante:

$message = 'line 1.\n';
$message .= 'line 2.';
1
répondu Ipsoratio 2012-12-06 01:02:28
la source

Essayer une recherche binaire". Supprimez la moitié du code et réessayez. Si l'erreur est toujours présente, supprimez la moitié du code restant. Si l'erreur n'est pas là, remettez ce que vous avez supprimé, et supprimez la moitié de cela. Répéter.

Vous devriez être en mesure de le réduire à quelques lignes assez rapidement. D'après mon expérience, à ce stade, vous remarquerez une stupide chaîne malformée.

il peut être opportun d'effectuer ceci sur une version sauvegardée de la Sortie HTML vers le navigateur, si vous n'êtes pas certain de la ressource côté serveur dans laquelle se trouve l'erreur.

0
répondu Chase Seibert 2008-10-23 05:03:21
la source

le développeur de page Web a deviné mal quel encodage est utilisé par le navigateur du spectateur. Ceci peut généralement être résolu en spécifiant un encodage dans l'en-tête de la page.

0
répondu Windows programmer 2008-10-23 05:26:10
la source

balayer le code qui vient avant la ligne# mentionnée par le message d'erreur. Tout ce qui n'a pas été publié a donné lieu à quelque chose en aval, (la ligne blâmée#), à signaler.

0
répondu Chris Noe 2008-10-23 20:32:19
la source

Whitespace est un autre problème que je trouve, causes de cette erreur. Utiliser une fonction pour couper l'espace peut aider.

0
répondu Lea 2010-03-31 18:05:50
la source

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

', stripslashes ($str));

ça devrait marcher.

-3
répondu Vishal Venugopal 2012-12-19 11:39:36
la source

Autres questions sur javascript debugging firefox-addon