在HTML块的开头,我发现了这个:
<body><script type="text/javascript" language="javascript1.2">//<![CDATA[
<!--
...a bunch of if/thens that drive a browser specific line of text...
//-->
//]]></script>
我很困惑,因为我希望HTML和javascript评论标记<!--
-->
和//
阻止代码运行,实质上解析为
<body><script type="text/javascript" language="javascript1.2"></script>
但是,我正在显示特定于浏览器的文本,并且似乎没有任何其他地方正在生成它。 <![CDATA[
是否会以某种方式覆盖javascript注释,允许脚本运行,而CDATA
块中的HTML注释会阻止javascript在浏览器中显示?有人可以帮我理解这一切是如何被解析和显示/使用的吗?
答案 0 :(得分:0)
<!-- -->
仅用于HTML评论,不用于javascript评论。 Javascript使用//
表示单行,/* */
表示多行注释。如果你在javascript中使用<!-- -->
,通常会被忽略。有些浏览器可能会抛出一个javascript错误。
答案 1 :(得分:0)
首先,所有JS代码都放在CDATA部分(参见Wikipedia)。这就是有评论//<![CDATA[
和//]]>
的原因。
这允许在JS代码中编写任意字符,包括被视为XML特殊符号的字符,如'&lt;','&gt;'等。
HTML评论开始<!--
表示JavaScript中单个评论的开始(请参阅this article)。 HTML评论结束 - -->
在JavaScript中没有任何意义,这就是为什么它前面有//
。
这里使用HTML注释来隐藏不支持JavaScript的浏览器的JavaScript代码。对于该浏览器,代码只是<!--
和-->
之间的文字,不会显示在页面上。
以这种方式评论是一种非常古老的做法。
在任何情况下,最好的方法是将所有JavaScript代码放在单独的文件中,并使用<script>
标记包含该文件。这样就可以避免使用CDATA和HTML注释。