Document.write (script) wirft unerwartetes Token "ILLEGAL"

7

Bevor du fragst, habe ich schon viel in Stack Overflow gesucht und google es tausendmal. Jeder andere Fall, den ich je gesehen habe, hat mir geholfen.

Gehen wir zu meinem Problem:

Ich versuche das folgende Skript in meinem Code zu verwenden:

%Vor%

Aber ich benutze Blogger und es erkennt meinen Code nicht richtig (beachte das schließende Tag des roten Skripts):

Damit kann ich das Template nicht speichern. Ich versuche also, meinen Code mithilfe dieser Website in HTML-Entitäten umzuwandeln. Wenn ich es kodiere, setze es in meine Vorlage und speichere, bekomme ich:

%Vor%

Hier ist die codierte Zeichenfolge, die ich verwenden möchte:

%Vor%

Was kann ich tun, um mein Problem zu lösen?

    
Paladini 23.12.2013, 05:26
quelle

4 Antworten

19

Das Problem besteht darin, dass die an document.write übergebene Zeichenfolge die Zeichen </script> enthält, was dazu führt, dass das Skriptelement, von dem document.write aufgerufen wird, vorzeitig beendet wird.

Die Zeichen </script> können nirgendwo innerhalb eines Skripts vorkommen, da der HTML-Parser keine Möglichkeit hat, diese von einem tatsächlichen </script> -Tag zu unterscheiden.

Sie könnten stattdessen Folgendes versuchen:

%Vor%

Oder, wie in den Kommentaren erwähnt:

%Vor%

Eine weitere Option ist die Verwendung der DOM-API, um ein script -Element zu erstellen und es in das Dokument einzufügen. Die anderen Antworten hier geben einige Vorschläge dafür, aber es gibt potentielle Probleme mit den Implementierungen (zum Beispiel wirft document.body.appendChild einen TypeError, wenn Sie versuchen, ihn innerhalb von head aufzurufen). So etwas wäre robuster:

%Vor%

Auch type='text/javaScript' ist falsch; Verwenden Sie text/javascript oder lassen Sie das type -Attribut weg.

    
Dagg Nabbit 23.12.2013, 05:39
quelle
4

Sie schreiben

%Vor%

Die Ausgabe wird also ein Skript-Tag innerhalb des Skript-Tags sein, deshalb wird Ihre Ausgabe

sein %Vor%

Stattdessen verwenden Sie nur document.write ("");

oder

%Vor%     
Just code 23.12.2013 05:48
quelle
2

Besserer Weg zum Laden von js asynch ist wie folgt

%Vor%

oder wenn Sie keine Funktion möchten, können Sie direkten Aufruf

verwenden %Vor%

Wie von Google vorgeschlagen, Ссылка

    
Raunak Kathuria 23.12.2013 05:33
quelle
0

Wenn Sie auf Django, und irgendwo ein ähnliches Problem haben: versuchen Sie dies:

%Vor%     
Deepak Sharma 29.07.2017 03:53
quelle