这是非法语法吗?

时间:2011-10-11 20:49:04

标签: javascript

<script type="text/javascript" language="JavaScript">
  <!--
    alert('foo');
  //-->
</script>

它在我公司的grails应用程序中全部使用,但我知道<是非法的javascript角色......

<!--应该改为//<!--吗?

5 个答案:

答案 0 :(得分:4)

不,这不违法。来自the specification

  

JavaScript引擎允许字符串“<!--”出现在SCRIPT元素的开头,并忽略其他字符直到行尾。

然而,这是毫无意义的。它旨在阻止不识别将内容作为文本呈现的脚本元素的浏览器。自 Netscape 2 以来,支持脚本元素!这使得今天语法的使用毫无意义。

但是,如果你使用的是XHTML,那么它就是有害的。由于脚本元素不包含内在CDATA,因此其中的标记被视为标记而不是CDATA,因此它实际上会将脚本注释掉(如果文档被处理为XHTML而不是标记汤,则需要application / xhtml + xml content-type)。

  

<!--应该改为//<!--吗?

不,那会(部分)击败对象。

答案 1 :(得分:0)

这是允许的,但不应该使用它。它最初是为了防止JavaScript文本显示在Mosaic FWIR中。

答案 2 :(得分:0)

如果浏览器不支持JavaScript,这是确保JavaScript不会显示为文本的旧方法。

请参阅here

答案 3 :(得分:0)

不应该使用它。

自Netscape 1.0以来一直没有要求

请参阅http://javascript.crockford.com/script.html道格拉斯·克罗克福德(Douglas Crockford)所说的话。

答案 4 :(得分:0)

<!--是Javascript中的一个特殊构造,从Javascript是新的时代开始,并且JS-unaware浏览器无处不在。换句话说,Javascript理解并忽略HTML注释开始标记。它被视为空格,仅用于隐藏不知道Javascript的古代浏览器中的JS,或者甚至不知道<script>标记是什么。

另一方面,html注释结束标记不是Javascript语言结构,必须使用JS //注释进行注释。