脚本标记内的HTML注释是最佳做法吗?

时间:2009-04-30 20:16:18

标签: javascript html

以下练习在我必须使用的内联JavaScript中相当普遍:

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

我知道关键是要防止与JavaScript不兼容的浏览器呈现源代码,但这仍然是今天的最佳做法吗?今天使用的绝大多数浏览器都可以解释JavaScript;即使现代移动设备通常也没有问题。

至于'为什么不呢?'问题:我最近不得不花几个小时调试一个问题,其中有人在' - &gt;'前面没有'//'在脚本标签的末尾深埋在某些页面中,这导致了神秘的JavaScript错误。

你做什么的?这仍然被认为是“最佳做法吗?”

10 个答案:

答案 0 :(得分:111)

重要的是,现在,特定的浏览器是否支持JavaScript是无关紧要的(绝大多数都是这样) - 这是无关紧要的,因为几乎所有都理解脚本块,这意味着他们知道忽略JavaScript,即使他们无法解释它。

Matt Kruse在他的 JavaScript工具箱网站上略微more detailed explanation,了解为什么在脚本块中使用HTML注释。

从该页面引用:


不要在脚本块中使用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源代码。事实上,由于以下原因,它可能被认为是有害的:

        
  • 在XHTML文档中,源实际上将从所有浏览器中隐藏,并且无法使用     
  • - HTML注释中不允许这样做,因此脚本中的任何减量操作都是无效的

答案 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,所以我把评论放回一切都很好。