2010-10-12 2 views
12

einigen Jahren wurde ich gelehrt, dass Blöcke JavaScript-Code in HTML eingebettet immer in HTML-Kommentare wie folgt verkapselt werden soll:Soll ich HTML-Kommentare verwenden, um JavaScript-Codeblöcke zu kapseln? Vor

<script type="text/javascript"> 
<!-- 
var hello = "world"; 
--> 
</script> 

Mir wurde gesagt, dies zu tun, aber ich habe nie Art vollständig herausgefunden, warum. Es scheint Art von Hacky HTML-Kommentare zu verwenden, so heute ich begonnen haben, mit meinem JavaScript-Code innerhalb des Skriptblock ohne die HTML-Kommentare zu schreiben:

<script type="text/javascript"> 
var hello = "world"; 
</script> 

Also meine Frage ist: sollte ich HTML-Kommentare verwenden JavaScript-Code zu kapseln Blöcke? Ist es sicher, nur das Skript ohne die Kommentare zu schreiben? Ich meine, riskiere ich etwas, wenn ich die Kommentar-Tags weglasse?

Antwort

11

Der HTML-Kommentar sollte das JavaScript von alten Browsern verbergen, die das <script>-Element nicht verstanden haben, und stattdessen seinen Inhalt auf der Seite rendern. Das war Mitte der neunziger Jahre. Heutzutage kann man davon ausgehen, dass Browser aus dieser Zeit nicht mehr im Web vorhanden sind und die Kommentare weglassen.

Die allgemeine Regel in Bezug auf HTML-Tags, die Browser nicht verstehen ist, dass der Browser vollständig den Tag ignorieren sollte und behandeln, um den Inhalt der Seite, als ob:

Einige schöne Geschichte auf, dass kann here finden dieses Etikett war nicht da. Dies bedeutet, dass, als Netscape 2 zuerst JavaScript (oder LiveScript, wie es damals genannt wurde) eingeführt wurde, ein HTML-Kommentar um das eigentliche Skript gelegt werden musste, um den Code vor anderen Browsern zu verbergen, die das Skript-Tag nicht verstanden haben Daher hätte ich den Code angezeigt, anstatt ihn auszuführen.Die JavaScript-Sprache wurde speziell dafür geschrieben, den Beginn eines HTML-Kommentars als allererste im Skript zu akzeptieren und zu ignorieren, damit der HTML-Kommentar dazu verwendet werden kann, das Skript vor Personen mit Netscape 1, Mozaic, zu verbergen , Internet Explorer 1, Internet Explorer 2 und andere Browser ähnlicher Herkunft, von denen keiner mehr verwendet. Es sind diese prähistorischen Browser (in JavaScript-Begriffen), die gemeint sind, wenn Sie Referenzen in antiquierten JavaScript-Tutorials sehen, um JavaScript in einen HTML-Kommentar einzufügen, um es vor "älteren" Browsern zu verbergen.

Mit Internet Explorer 3 hat Microsoft eine eigene Entsprechung zu JavaScript eingeführt, die sie JScript nennen. Seitdem alle Browser zumindest das Skript-Tag erkannt haben und modernere Browser (Netscape 2+, IE3 + usw.) ist der HTML-Kommentar nicht mehr erforderlich. Sobald alle Ihre Besucher auf Netscape 2, Internet Explorer 3 oder a neueren Browser als eines dieser beiden der Kommentar aus dem Skript wird redundanter Code.

+0

Danke! Das war irgendwie meine Vermutung. Ich habe keinen einzigen Client gefunden, der Probleme mit einer Seite mit JavaScript-Block ohne Kommentar hatte. Wissen Sie auch, in welchen Browsern dieses unerwünschte Verhalten auftritt? – jsalonen

+0

@jsalonen: siehe bearbeiten – Joey

+0

So ist es wirklich eine alte Anforderung. Fall abgeschlossen. Vielen Dank! – jsalonen

6

Gerade von the source

18.3.2 Ausblenden von Skriptdaten von Benutzeragenten

Benutzerprogramme, die wahrscheinlich nicht das SCRIPT-Element erkennt, dass Element Inhalt als Text übertragen. Einige Skriptmodule, einschließlich der Sprachen für JavaScript, VBScript und Tcl, ermöglichen es, die Skriptanweisungen in einen SGML-Kommentar einzufügen. Benutzeragenten, die das SCRIPT-Element nicht erkennen, ignorieren daher den Kommentar, während intelligente Skriptmodule verstehen, dass das Skript in Kommentaren ausgeführt werden sollte.

Eine andere Lösung für das Problem besteht darin, Skripts in externen Dokumenten zu behalten und sie mit dem src-Attribut zu verweisen.

kommentiert Skripte in JavaScript Die JavaScript-Engine die Zeichenfolge „<!--“ ermöglicht zu Beginn eines SCRIPT-Elements auftreten, und ignoriert weitere Zeichen bis zum Ende der Zeile. JavaScript interpretiert "//" als einen Kommentar, der sich bis zum Ende der aktuellen Zeile erstreckt. Dies ist erforderlich, um die Zeichenfolge "-->" aus dem JavaScript-Parser auszublenden.

<SCRIPT type="text/javascript"> 
<!-- to hide script contents from old browsers 
    function square(i) { 
    document.write("The call passed ", i ," to the function.","<BR>") 
    return i * i 
    } 
    document.write("The function returned ",square(5),".") 
// end hiding contents from old browsers --> 
</SCRIPT> 

Außerdem, wenn Sie wirklich wollen, zu verstehen, was das alles bedeutet, lesen Sie dieses excellent article. Es ist lang, , aber es lohnt sich.

+1

Können Sie ein wenig mehr angeben: Wie real ist dieses Risiko? Kennst du bestimmte Browser, die sich so verhalten? – jsalonen

+0

Kein Browser, der eine halbaktuelle Version von HTML unterstützt, wird den Inhalt des Elements '