11 Stimmen

Sollte ich HTML-Kommentare verwenden, um JavaScript-Codeblöcke zu kapseln?

Vor einigen Jahren wurde mir beigebracht, dass in HTML eingebettete JavaScript-Codeblöcke immer in HTML-Kommentare eingebettet werden sollten:

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

Mir wurde gesagt, ich solle das tun, aber ich habe nie ganz verstanden, warum. Die Verwendung von HTML-Kommentaren erscheint mir etwas umständlich, so dass ich inzwischen damit begonnen habe, meinen JavaScript-Code innerhalb des Skriptblocks ohne HTML-Kommentare zu schreiben:

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

Meine Frage lautet also: Sollte ich HTML-Kommentare verwenden, um JavaScript-Codeblöcke zu kapseln? Ist es sicher, das Skript einfach ohne Kommentare zu schreiben? Ich meine, riskiere ich etwas, wenn ich die Kommentar-Tags weglasse?

10voto

Joey Punkte 329386

Der HTML-Kommentar sollte das JavaScript vor alten Browsern verbergen, die die <script> Element und rendert stattdessen seinen Inhalt auf der Seite. Das war schon Mitte der 90er Jahre, glaube ich. Heutzutage kann man sicher davon ausgehen, dass Browser aus dieser Zeit nicht mehr im Internet zu finden sind und die Kommentare weglassen.

Eine schöne Geschichte dazu finden Sie unter ici :

Bei HTML-Tags, die von Browsern nicht verstanden werden, gilt die allgemeine Regel, dass der Browser das Tag vollständig ignoriert und den Inhalt der Seite so behandelt, als ob das Tag nicht vorhanden wäre. Das bedeutet, dass bei der Einführung von JavaScript (oder LiveScript, wie es damals hieß) durch Netscape 2 ein HTML-Kommentar um das eigentliche Skript herum eingefügt werden musste, um den Code vor anderen Browsern zu verbergen, die das Skript-Tag nicht verstanden und daher den Code angezeigt hätten, anstatt ihn auszuführen.

Die JavaScript-Sprache wurde speziell so geschrieben, dass sie den Anfang eines HTML-Kommentars als allerersten Teil des Skripts akzeptiert und ihn ignoriert, damit der HTML-Kommentar verwendet werden kann, um das Skript vor Leuten zu verstecken, die Netscape 1, Mozaic, Internet Explorer 1, Internet Explorer 2 und andere Browser ähnlicher Bauart verwenden, die heute niemand mehr benutzt. Es sind diese prähistorischen Browser (in Bezug auf JavaScript), die gemeint sind, wenn in veralteten JavaScript-Tutorials darauf hingewiesen wird, dass man sein JavaScript in einen HTML-Kommentar packen soll, um es vor "älteren" Browsern zu verstecken.

Mit Internet Explorer 3 führte Microsoft sein eigenes Äquivalent zu JavaScript ein, das sie JScript nennen. Seitdem erkennen alle Browser zumindest das Skript-Tag, und bei moderneren Browsern (Netscape 2+, IE3+ usw.) ist der HTML-Kommentar nicht mehr erforderlich, so dass das Auskommentieren des Skripts überflüssig wird, sobald alle Ihre Besucher entweder Netscape 2, Internet Explorer 3 oder einen neueren Browser als diese beiden verwenden.

7voto

Marko Punkte 69929

Direkt von die Quelle

18.3.2 Skriptdaten vor Benutzeragenten verstecken

Benutzeragenten, die das SCRIPT-Element nicht erkennen, werden den Inhalt dieses Elements wahrscheinlich als Text darstellen. Einige Skripting-Engines, einschließlich derjenigen für die Sprachen JavaScript, VBScript und Tcl, erlauben es, die Skriptanweisungen in einen SGML-Kommentar einzuschließen. Benutzeragenten, die das SCRIPT-Element nicht erkennen, ignorieren daher den Kommentar, während intelligente Skripting-Engines verstehen, dass das Skript in Kommentaren ausgeführt werden soll.

Eine andere Lösung des Problems besteht darin, Skripte in externen Dokumenten aufzubewahren und mit dem Attribut src auf sie zu verweisen.

Kommentieren von Skripten in JavaScript Die JavaScript-Engine erlaubt die Zeichenkette " <!-- " am Anfang eines SCRIPT-Elements auf und ignoriert weitere Zeichen bis zum Ende der Zeile. JavaScript interpretiert " // " als Beginn eines Kommentars, der bis zum Ende der aktuellen Zeile reicht. Dies ist erforderlich, um die Zeichenkette " --> " aus dem JavaScript-Parser.

<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>

Und wenn Sie wirklich verstehen wollen, was das alles bedeutet, lesen Sie dies hervorragender Artikel . Es ist langwierig, aber es lohnt sich .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X