HTML-Kommentare in einem JavaScript-Block?

8

Ich habe eine Funktion wie diese (unten), die einen HTML-Code-Block in eine HTML-Seite einfügt:

%Vor%

Dies funktioniert gut für HTML-Code, der ein img -Tag enthält.

Wenn der HTML-Code <script> Blöcke enthält, werden diese nicht gerendert. Darüber hinaus enthalten die Skriptblöcke JavaScript, das von HTML-Kommentaren umgeben ist. Zum Beispiel:

%Vor%

Diese Skriptblöcke, die HTML-Kommentare enthalten, werden nach dem Einfügen nicht dargestellt. Ich habe Kontrolle über den Code, der eingefügt wird, und ich habe es ohne die HTML-Kommentare getestet, und sie wurden erfolgreich gerendert.

Ich verstehe, dass HTML-Kommentare wie diese in früheren Versionen von Netscape verwendet wurden, um Probleme mit der Inkompatibilität des Browsers mit Javascript zu vermeiden.

Gibt es einen anderen Grund (oder einen guten Grund), Kommentare im HTML-Stil in einen JavaScript-Block aufzunehmen?

Bearbeiten Ich habe mich vertippt. Der abschließende Kommentar lautet: //--> .

    
Mike Moore 25.04.2011, 15:37
quelle

5 Antworten

14

Tatsächlich ist nur <!-- ein gültiges Javascript. Um den HTML-Kommentar in Javascript zu beenden, müssen Sie //--> verwenden.

Heutzutage ist es nicht mehr nötig, die HTML-Kommentare in Javascript zu verwenden. Browser, die so alt sind, dass sie das <script> -Tag nicht verstehen, sind höchst unwahrscheinlich in der Lage, auf einer "modernen" Website viel von etwas zu rendern, und Sie sollten nicht auf Benutzer eingehen müssen, die buchstäblich auf einem steinzeitlichen Browser arbeiten .

Wenn Sie jedoch beabsichtigen, Ihren HTML-Code in ein xml-Dokument einzubinden und / oder x-html zu schreiben, dann müssen Sie die xml-Dateien <![CDATA[ und ]]> als verschiedene Javascript-Operatoren verwenden ( & , < und > im Besonderen) führt zu XML-Parse-Fehlern ohne die Gehäuse.

    
Marc B 25.04.2011, 15:41
quelle
6

Nein, es gibt keinen Grund, sie einzubeziehen. Ich lasse diese Kommentare regelmäßig weg und habe keine Probleme mit modernen Browsern.

    
Charlie Kilian 25.04.2011 15:38
quelle
6

Dies ist eine nicht standardmäßige Funktion, die Browser und JavaScript-Engines immer implementiert haben. Heutzutage kann es nicht von der Web-Plattform entfernt werden, da dies die Abwärtskompatibilität zerstören würde. Es ist detailliert in der JavaScript / Web ECMAScript-Spezifikation :

  

<!-- muss als Anfang von SingleLineComment behandelt werden -   entspricht // .

%Vor%      

--> am Anfang einer Zeile, optional gefolgt von Leerzeichen oder    MultiLineComment s, muss als SingleLineComment behandelt werden -   entspricht // .

%Vor%
    
Mathias Bynens 05.09.2013 14:18
quelle
4

<script> innerhalb von Zeichenketten, die über innerHTML gesetzt wurden, läuft nie (hauptsächlich weil es nie in IE und dann auf Seiten davon kam, also wenn andere Browser die innerHTML Implementierung rückentwickelten, mussten sie das auch tun). Die HTML-Kommentare dort sind ein Ablenkungsmanöver.

Wenn Sie <script> ausführen möchten, müssen Sie eine andere Methode zum Einfügen der Knoten verwenden (z. B. createContextualFragment ).

    
Boris Zbarsky 25.04.2011 16:14
quelle
2

HTML-Kommentare in Skriptblöcken sind seit vielen Jahren nicht mehr nötig. Sie auszulassen, wird keine Probleme verursachen.

Referenzen: Ссылка

    
Ken Redler 25.04.2011 15:40
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '324484',
    'url' => 'html-comments-in-a-javascript-block',
];

$_SESSION = [
    '__flash' => [],
];