为什么人们添加<! - // ... // - >围绕他们的javascript代码?

时间:2012-06-11 23:35:02

标签: javascript

我记得几年前读过一些关于它的事情,但我不记得了。

是否与IE有关并将其解析为纯文本...?

3 个答案:

答案 0 :(得分:3)

我认为你的意思是CDATA

source

  

这修复了验证器。问题是一些较旧的Web浏览器   不明白CDATA标签,所以这打破了你的Javascript   那些网络浏览器。幸运的是,Javascript多行评论开始了   并完成不会导致验证错误的字符。我们可以   因此,就Javascript而言,注释掉CDATA标签   Web浏览器中的处理器仍处于关注状态   Javascript内容定义为CDATA,直到验证器为止   关心。我们这样做:

<script type="text/javascript">
/* <![CDATA[ */
// content of your Javascript goes here
/* ]]> */
</script>

答案 1 :(得分:3)

应在JavaScript周围添加HTML评论标记<!---->,以防止不了解JS的旧浏览器将其显示为文本。最好将JavaScript“注释到行尾”字符//放在结束的HTML注释标记前面,这样JavaScript就不会将其解释为代码。从技术上讲,对没有了解JS的浏览器非常很少见,但它不会伤害任何东西,成本可能总共15个字节。

最后,我通常会做这样的事情,主要是出于习惯:

<script type="text/javascript">
<!--
var scriptHere="whatever";
//-->
</script>

答案 2 :(得分:0)

我会在这里猜测一下......你的意思是这样的:

<script type="text/javascript">//<![CDATA[
function doStuff() {
    alert('Yadayadayada');
}
//]]></script>

(变体包括<!--作为第一行,//-->作为最后一行,因为<!--也是JavaScript中的注释。)

它可能与旧浏览器将其解释为文本有关,但在这方面,您绝对不必再担心它了。

另一部分是有效性。 JavaScript中使用的某些字符(例如<>用于比较,而&用于AND操作)不是有效的XML。将它们放入CDATA块使它们有效。但是,我不知道任何会因此而导致问题的浏览器。

当然,处理此问题的最佳方法是使用src链接到外部脚本:

<script type="text/javascript" src="scripts/whatever.js"> </script>

它可以很好地区分内容和行为,整理你的标记,利用缓存和并行下载,让你不用担心这样的事情。