繁体   English   中英

我需要帮助来解密此javascript

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM