Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich versuche, einen JavaScript-Skript zu debuggen, die in einer Firefox-Erweiterung gelesen und ausgeführt wird. Ich kann nur Fehler über die Firebug-Konsole sehen (mein Code ist unsichtbar für Firebug), und es ist eine Berichterstattung „ungekündigten Stringliteral.“

überprüfte ich die Linie und die Linien um ihn herum und alles scheint in Ordnung-Klammern, und Zitate sind ausgeglichen, etc. Was andere mögliche Ursachen sind, die wir achten sollen?

War es hilfreich?

Lösung

Die meisten Browser scheinen Probleme mit Code wie folgt zu haben:

var foo = "</script>";

In Firefox, Opera und IE8 dies führt zu einem ungekündigten Stringliteral Fehler. Kann ziemlich böse sein, wenn HTML-Code, Serialisierung, die Skripte enthält.

Andere Tipps

Geben Sie für Zeilenumbrüche! Das ist oft die Ursache.

Ich würde stimmen jamtoday Antwort, wenn ich den „Ruf“

habe

Wenn Ihre Daten anhand von PHP kommen, könnte dies helfen,

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

Ich habe gerade entdeckt, dass "<\/script>" erscheint sowie "</scr"+"ipt>" zu arbeiten.

Sie könnten versuchen, das Skript ausgeführt wird durch JSLint .

Sie Ihre Tag-Verschlüsse entkommen oder ASCII-Code verwenden

dh

<\/script>

dh

<&#47;script>

Wenn Sie Ausschneiden / Einfügen getan haben: einige Online-Syntaxhervorhebungen werden einfache und doppelte Anführungszeichen mangle, so dass sie in formatierte Zitat Paare (matched Öffnen und Schließen Paare) drehen. (Tho ich keine Beispiele jetzt finden) ... Damit bringt schlagen Befehl- + ein paar Mal und starrt auf Ihren Anführungszeichen

anderen Schriftart? auch, verschiedene Editoren und IDEs verwenden unterschiedliche Tokenizer und markieren Regeln und JS ist ein dynamische Sprache zu analysieren, so versuchen, die Datei in emacs, vim, gedit zu öffnen (mit JS-Plugins) ... Wenn Sie Glück haben, einer von ihnen wird einen lange lila String läuft bis zum Ende zeigt von Datei.

Suchen Sie nach einer Zeichenfolge, die eine unescaped Apostroph enthält, die von einem Server-Side-Code eingefügt werden können.

Haben Sie Ihre Schrägstriche entkommen (/)? Ich habe Probleme mit denen hatten, bevor

Haben Sie versucht, Chromebug ? Es ist die Firebug für Erweiterungen.

Ich habe Probleme mit abgewinkeltem Anführungszeichen in der Vergangenheit habe ( ‚) in der Regel von Kopieren und Einfügen aus Word. Ersetzen sie mit regelmäßigen Apostrophe ( ') funktioniert der Trick.

Auch bedenken Sie, dass% 0A der Zeilenvorschub-Zeichen URL-kodiert ist. Es dauerte eine Weile, um herauszufinden, wo es ein Zeilenvorschub in meinem problematischen Code war.

Wenn alles nichts hilft, suchen Sie nach einigen Unicode-Zeichen wie

\u2028

diese Zeichenfolge auf mehr als eine Zeile brechen kann und diesen Fehler werfen

Vielleicht ist es, weil Sie einen Zeilenumbruch in Ihrem PHP-Code. Wenn Sie Zeilenumbrüche in Ihrem Alarmfenster Nachricht benötigen, sind sie als entkam Syntax am Ende jeder Zeile in Ihrem PHP-Code. Ich mache es in der Regel die folgende Art und Weise:

$message = 'line 1.\\n';
$message .= 'line 2.';

Versuchen Sie, eine „binäre Suche“. Löschen Sie die Hälfte Code und versuchen Sie es erneut. Falls der Fehler immer noch da ist, löschen Sie die Hälfte restlichen Code. Wenn der Fehler nicht vorhanden ist, setzen, was Sie in gelöscht zurück, und löschen Sie die Hälfte davon. Wiederholen.

sollten Sie in der Lage sein, es zu verengen ziemlich schnell auf ein paar Zeile nach unten. Meine Erfahrung ist, an dieser Stelle, dass, werden Sie einig dumme ungültige Zeichenfolge bemerken.

Es kann zweckmäßig sein, diese an den Browser auf eine gespeicherte Version des HTML-Ausgabe auszuführen, wenn Sie nicht sicher sind, welche serverseitigen Ressource der Fehler in.

Die Web-Seite Entwickler erraten falsch darüber, welche Codierung durch den Betrachter Browser verwendet wird. Dies kann in der Regel durch Angabe eine Codierung in der Seite Header gelöst werden.

, um den Code scannen, die kommt vor die Zeile # durch Fehlermeldung erwähnt. Was auch immer unabgeschlossen ist, wird in etwas stromabwärts (die Schuld Linie #) führt, gekennzeichnet zu werden.

Whitespace ist ein weiteres Problem, das ich finden, die Ursachen dieser Fehler. Verwendung einer Funktion helfen, die Leerzeichen trimmen kann.

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

Das sollte funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top