[英]I need help deciphering this javascript
在一段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在浏览器中显示? 有人可以帮助我了解如何解析和显示/使用所有这些内容吗?
<!-- -->
仅用于HTML注释,而不用于javascript注释。 Javascript将//
用于单行,将/* */
用于多行注释。 如果您确实在JavaScript中使用<!-- -->
,通常只会被忽略。 某些浏览器可能会在上面抛出javascript错误。
首先,所有JS代码都放在CDATA部分中(请参阅Wikipedia )。 这就是为什么有注释//<![CDATA[
and //]]>
。 这样就可以在JS代码中编写任意字符,包括字符,这些字符被视为XML的特殊符号,例如“ <”,“>”等。
HTML注释开始<!--
表示JavaScript中单个注释的开始(请参阅本文 )。 HTML注释结尾-- -->
在JavaScript中没有意义,这就是为什么在它之前加上//
的原因。
HTML注释在这里用于向不支持JavaScript的浏览器隐藏JavaScript代码。 对于这些浏览器,代码将只是<!--
和-->
之间的文本,并且不会显示在页面上。
以这种方式发表评论是一种非常古老的做法。
无论如何,最好的做法是将所有JavaScript代码放在一个单独的文件中,并使用<script>
标记将该文件包括在内。 这样一来,将避免同时使用CDATA和HTML注释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.