以下练习在我必须使用的内联JavaScript中相当普遍:
<script type="text/javascript">
<!--
// Code goes here
//-->
</script>
我知道关键是要防止与JavaScript不兼容的浏览器呈现源代码,但这仍然是今天的最佳做法吗?今天使用的绝大多数浏览器都可以解释JavaScript;即使现代移动设备通常也没有问题。
至于'为什么不呢?'问题:我最近不得不花几个小时调试一个问题,其中有人在' - &gt;'前面没有'//'在脚本标签的末尾深埋在某些页面中,这导致了神秘的JavaScript错误。
你做什么的?这仍然被认为是“最佳做法吗?”
答案 0 :(得分:111)
重要的是,现在,特定的浏览器是否支持JavaScript是无关紧要的(绝大多数都是这样) - 这是无关紧要的,因为几乎所有都理解脚本块,这意味着他们知道忽略JavaScript,即使他们无法解释它。
Matt Kruse在他的 JavaScript工具箱网站上略微more detailed explanation,了解为什么不在脚本块中使用HTML注释。
从该页面引用:
在javascript(1995)的古代,一些像Netscape 1.0这样的浏览器对脚本标签没有任何支持或了解。因此,当javascript首次发布时,需要一种技术来隐藏旧浏览器中的代码,以便它们不会在页面中将其显示为文本。 'hack'是在脚本块中使用HTML注释来隐藏代码。
在脚本中使用HTML注释不好
// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
// code here
//-->
</script>
目前没有普遍使用的浏览器不知道&lt; script&gt;标记,因此不再需要隐藏javascript源代码。事实上,由于以下原因,它可能被认为是有害的:
答案 1 :(得分:23)
我已经不再这样做了。在某些时候你只需要放弃你的NCSA马赛克。
答案 2 :(得分:9)
根据 W3C建议书,隐藏USER AGENTS的脚本数据非常有用。
引自W3c page:
在JavaScript中评论脚本JavaScript引擎允许字符串"<!--"
出现在SCRIPT元素的开头,并忽略其他字符,直到行结束。 JavaScript将“//”解释为开始延伸到当前行末尾的注释。这需要隐藏字符串“ - &gt;”来自JavaScript解析器。
<SCRIPT type="text/javascript">
<!-- to hide script contents from old browsers
function square(i) {
document.write("The call passed ", i ," to the function.","<BR>")
return i * i
}
document.write("The function returned ",square(5),".")
// end hiding contents from old browsers -->
</SCRIPT>
答案 3 :(得分:8)
不,这是首次引入脚本元素时使用的解决方法的宿醉。今天没有浏览器无法理解脚本元素(即使它将其理解为“因为脚本被关闭或不受支持而应该被忽略的脚本”)。
在XHTML中,它们是有害的。
我前段时间写了一些关于the history of it的文章。
答案 4 :(得分:3)
暂时停止使用它。另外,根据Douglas Crockford,您可以从脚本代码中drop the type attribute,因为大多数浏览器中唯一可用的脚本语言是JavaScript。
答案 5 :(得分:1)
如果您手动输入,我建议您始终使用外部js文件,这将有很大帮助。
关于您的担忧:今天大多数浏览器都是JavaScript安全的。然而,有时人们可能会编写简单的解析器来直接获取HTML - 我必须说,安全引用对这些客户来说真的很有帮助。另外一些像旧Lynx这样的非JS客户也可以从中受益。
答案 6 :(得分:1)
如果在脚本标记之间没有包含文字文本 - 也就是说,如果从src文件加载脚本,则可以忘记注释。
答案 7 :(得分:1)
我建议使用CDATA部分,如this question中所述。
答案 8 :(得分:0)
我很久以前就没那么做了。你真的不需要它在这个时代。
答案 9 :(得分:-1)
我不这样做,但前几天我去了w3c验证我的密码保护网站。所以我不得不使用他们的直接输入法。它抱怨我的javascript,所以我把评论放回一切都很好。