我需要帮助解密这个javascript

时间:2013-11-25 17:18:29

标签: javascript comments cdata

在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在浏览器中显示?有人可以帮我理解这一切是如何被解析和显示/使用的吗?

2 个答案:

答案 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注释。

相关问题