2011-10-11 52 views
0
<script type="text/javascript" language="JavaScript"> 
    <!-- 
    alert('foo'); 
    //--> 
</script> 

它用遍了我公司的Grails应用程序,但我知道<是非法的JavaScript字符...这是非法的语法?

如若<!--//<!--呢?

+0

你为什么要那样做?在Javascript中,您可以使用//或/ * * /进行评论 – lc2817

+4

如果浏览器不支持JavaScript,那么确保JavaScript不会显示为文本的方式是老方法。 –

+2

看到http://www.javascripter.net/faq/hidingjs.htm(我可以找到第一个链接解释它) –

回答

4

不,它不是非法的。从the specification

JavaScript引擎允许字符串“<!--”发生在一个SCRIPT元素开始,并且忽略进一步字符到行的结尾。

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

但是,如果您使用的是XHTML,那么它是有害的。由于脚本元素不包含内在的CDATA,因此它们内部的标记被视为标记而不是CDATA,因此它实际上会对脚本进行注释(如果文档被处理为XHTML并且不标记汤,这将需要application/xhtml + xml内容类型)。

<!--应该是//<!--而不是?

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

+1

但显然stackoverflow不;);) –

0

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

0

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

请参阅here

0

<!--是Javascript中的一个特殊构造,在JavaScript刚出现的时代就已经存在了,并且JS未知浏览器无处不在。换句话说,Javascript理解并忽略HTML注释开始标签。它被视为空白,并且仅用于隐藏来自不知道Javascript的古代浏览器的JS,或者甚至不知道<script>标签是什么。

另一方面,HTML注释结束标记不是Javascript语言结构,必须使用JS //评论注释掉。