Ist es immer noch relevant, ein HTML-Kommentar-Tag für JavaScript-Code zu verwenden?
ich meine
<html>
<body>
<script type="text/javascript">
//<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>
javascript
browser
rajakvk
quelle
quelle
Antworten:
HTML-Kommentare, dh.
<!-- -->
werden nicht mehr benötigt. Sie sollten Browsern, die das<script>
Tag nicht verstanden haben, ermöglichen, sich ordnungsgemäß zu verschlechtern. Diese Browser, z. Netscape 1.x kommt in freier Wildbahn nicht mehr vor. Es macht also wirklich keinen Sinn mehr, HTML-Kommentare in Ihre Skript-Tags einzufügen.Wenn Sie möchten, dass Ihr HTML als XHTML oder XML validiert wird, möchten Sie wahrscheinlich ein auskommentiertes CDATA-Tag verwenden.
<script type="text/javascript"> //<![CDATA[ document.write("Hello World!"); //]]> </script>
Der Grund dafür ist , damit Ihr
<
,>
,&
,"
und'
dass ein Teil Ihres JavaScript - Code sind müssen nicht so codiert werden<
,>
,&
,"
und'
jeweils.quelle
</script>
dem normalerweise in</scr
und aufgeteilt wirdipt>
.]]>]]<![CDATA[>
☺<script>
Zeug richtig), sehe ich keinen signifikanten Vorteil desCDATA
Blocks über dem traditionellen Kommentar. Der einzige Unterschied ist, ob der<script>
offiziell Inhalt hat oder nicht - und in Bezug auf Suchmaschinen möchten wir vielleicht, dass er keinen Inhalt hat ...Nicht wirklich, es sei denn, Sie zielen auf 20 Jahre alte Browser ab.
quelle
Es ist besser, JavaScript im gesamten Körper zu vermeiden. Dies erleichtert die Aktualisierung, vermeidet die Notwendigkeit von Kommentaren und zwingt Sie dazu, sowohl für Benutzer ohne JavaScript als auch für Benutzer mit aktiviertem JavaScript zu planen.
quelle
.js
ist es schwieriger , Ihr gesamtes Javascript in Dateien anstatt im HTML- Code zu haben, da die.js
Dateien möglicherweise zwischengespeichert werden.<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
Nicht so wie du es machst, nein.
Das <! - wird in Javascript genauso behandelt wie //, daher sollte Ihr Code stattdessen so aussehen:
<script type="text/javascript"> <!-- document.write("Hello World!"); //--> </script>
..der Unterschied zu Ihrem besteht darin, dass ein seltener, obskurer Browser, der das Skript-Tag möglicherweise nicht versteht, die Öffnung // auf dem Bildschirm druckt, was den Zweck, das Kommentar-Tag dort zu platzieren, zunichte macht.
Hier finden Sie weitere Informationen, wenn Sie neugierig sind: http://www.javascripter.net/faq/comments.htm
Letztendlich wissen jedoch auch sehr obskure Browser, die standardmäßig kein Javascript unterstützen (wie HTMLLayout Browse oder Netsurf), dass es am besten ist, den Text nicht zwischen Skript-Tags zu rendern. Nein, er ist in keiner Weise mehr relevant. Allerdings sollten alle Browser, die Sie interessieren könnten, die <! - Syntax verstehen, sodass Sie sich keine Sorgen machen müssen, sie aus dem zu entfernen, was Sie bereits haben, da es sich um gültige js handelt. Denken Sie daran, sie beim nächsten Mal nicht hinzuzufügen.
quelle
Selbst in modernen Browsern kann dies nützlich sein. Ich bin heute tatsächlich auf dieses Problem gestoßen, gerade weil ich vermeiden wollte, dass Javascript in mein HTML eingebettet wird.
Ich habe eine HTML - Seite , die auf serviert wird
http://host/variable_app_name/pagename
, wovariable_app_name
viele Werte haben kann (y'know, Variable). Wenn es auf statische Dateien zugreifen möchte, muss es eine URL wie verwendenhttp://host/static/variable_app_name/filename
, daher kann ich den Speicherort der statischen Datei nicht angeben, ohne zuerst den Speicherort des Browsers zu überprüfen, um den Wert von zu ermittelnvariable_app_name
.Um auf die Haupt-Javascript-Datei zu verlinken, gehe ich wie folgt vor:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n'); </script>
Der obige Code wird auch in der neuesten Version von Chrome explodieren, da das Skript-Tag in der Mitte einer Javascript-Zeichenfolge beendet wird und der Rest der Zeichenfolge wie folgt als HTML interpretiert wird:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"> </script> \n'); </script>
Es gibt viele Möglichkeiten, dies zu beheben, aber ich verwende gerne einen HTML-Kommentar.
Mit HTML-Kommentar:
<script type="text/javascript" > <!-- var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n'); --> </script>
Aufbrechen der Javascript-Zeichenfolge:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n'); </script>
Erstellen und anhängen Sie das Skript-Tag, anstatt document.write zu verwenden:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '/static/'+variable_app_name+'/pagename.js'; document.head.appendChild(script); </script>
Ich verwende gerne den HTML-Kommentar, da es sich um eine kurze Änderung handelt und nicht für jede verknüpfte Datei repliziert oder überlegt werden muss.
quelle