Javascript 脚本标记中的HTML注释是最佳实践吗?
以下做法在我必须使用的内联JavaScript中相当常见:Javascript 脚本标记中的HTML注释是最佳实践吗?,javascript,html,Javascript,Html,以下做法在我必须使用的内联JavaScript中相当常见: <script type="text/javascript"> <!-- // Code goes here //--> </script> 我知道关键是要防止与JavaScript不兼容的浏览器呈现源代码,但这仍然是当今的最佳实践吗?现在使用的绝大多数浏览器都可以解释JavaScript;即使是现代移动设备通常也没有问题 至于‘为什么不呢?’问题:我最近不得不花几个小
<script type="text/javascript">
<!--
// Code goes here
//-->
</script>
我知道关键是要防止与JavaScript不兼容的浏览器呈现源代码,但这仍然是当今的最佳实践吗?现在使用的绝大多数浏览器都可以解释JavaScript;即使是现代移动设备通常也没有问题
至于‘为什么不呢?’问题:我最近不得不花几个小时调试一个问题,有人在一些页面中深埋的脚本标记末尾的'-->'前面留下了'//',这导致了神秘的JavaScript错误
你是做什么的?这仍然被认为是“最佳实践”吗?我已经不再这么做了。在某个时刻,你只需要放下你的NCSA马赛克。我很久以前就不再这么做了。在这个时代,你真的不需要它。我不需要它,但前几天我去w3c验证了我的密码保护站点。所以我不得不使用他们的直接输入法。它抱怨我的javascript,所以我把评论放回原处,一切都很好。如果你是手动输入,我建议你总是使用外部js文件,这会很有帮助
关于您的担忧:现在大多数浏览器都是JavaScript安全的。然而,有时人们可能会编写简单的解析器来直接获取HTML——我必须说,安全引用对这些客户机非常有用。另外,像old Lynx这样的一些非JS客户机也会从中受益。重要的是,如今,某个特定浏览器是否支持JavaScript是无关紧要的(显然大多数浏览器都支持),这是无关紧要的,因为几乎所有人都理解脚本块,这意味着他们知道忽略JavaScript,即使他们无法解释它 马特·克鲁斯(Matt Kruse)在他的JavaScript工具箱网站上稍微解释了为什么不在脚本块中使用HTML注释 引自该页:
不要在脚本块中使用HTML注释 在古javascript时代(1995年),一些浏览器,如Netscape 1.0,不支持或不了解脚本标记。因此,当javascript第一次发布时,需要一种技术来对旧浏览器隐藏代码,这样它们就不会在页面中显示为文本。“黑客”是在脚本块中使用HTML注释来隐藏代码。 在脚本中使用HTML注释是错误的
// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
// code here
//-->
</script>
//不要这样做!代码仅仅代表了事情是如何完成的
现在常用的浏览器都不知道标记,因此不再需要隐藏javascript源代码。事实上,它可以被认为是有害的,原因如下:
- 在XHTML文档中,源代码实际上对所有浏览器都是隐藏的,并且变得毫无用处
- --在HTML注释中不允许,因此脚本中的任何减量操作都是无效的
不久前我写了一些东西。不久前停止使用这个。此外,根据,您可以从脚本标记中删除脚本,因为大多数浏览器中唯一可用的脚本语言是JavaScript。根据W3C建议,对用户代理隐藏脚本数据非常有用 引自: 在JavaScript中注释脚本JavaScript引擎允许来自JavaScript解析器的字符串
”
如果在脚本标记之间不包含文字-也就是说,如果从src文件加载脚本,则可以忽略注释。我建议使用CDATA部分,如中所述。大多数浏览器仍然可以工作,但它违反了HTML规范,所以我不建议。你永远不知道IE什么时候会把VB脚本作为默认类型..+1。我知道有人在我的comp.lang.javascript的日子里有很多关于这个主题的信息,当你的答案出现时,我正在阅读新闻组档案,引用Matt。在XHTML中,你可以使用CDATA而不是HTML注释://我应该补充一下,这个“黑客”在Internet Explorer 9中产生了一个错误(一位客户抱怨页面工作不正常,这就是原因)如果使用的是HTML 4.x,那么XHTML的情况就完全不同了。See的可能副本也就是说,没有提供OP停止这样做的理由。你是在建议他停止这样做,因为你这样做了,这还不足以作为我的答案。@LawrenceAiello:“最佳实践”这个短语呢让你想到“事实”而不是“观点”?这是整个帖子的最终错误。它应该被关闭,因为这是一个讨论问题。也许当这篇文章在六年前发布时,它可以作为一个答案,但按照今天的网站标准,它不能。这个答案正在@Yvette上讨论。你在六年后发布该评论的动机是什么r我把我的答案贴出来了?@Yvette没有冒犯,我只是好奇而已。当然你是对的;现在我会把它贴出来作为评论。
<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>