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

And*_*eiM 94 html javascript

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

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Nol*_*rin 113

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

Matt Kruse 在他的JavaScript工具箱网站上给出了一个稍微详细的解释,说明为什么不在脚本块中使用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>
Run Code Online (Sandbox Code Playgroud)

目前普遍使用的浏览器都不知道<script>标记,因此不再需要隐藏javascript源代码.事实上,由于以下原因,它可能被认为是有害的:

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


cha*_*aos 24

我已经不再这样做了.在某些时候你只需要放弃你的NCSA马赛克.

  • 换句话说,没有提供理由为**为什么**OP应该停止这样做.你建议他应该停止这样做,因为你这样做,这不足以成为IMO的答案. (6认同)
  • 好吧,这就是整篇文章中的最终错误.它本应该被关闭,因为它是一个讨论问题. (5认同)
  • @LawrenceAiello:“最佳实践”这个短语让你想到“事实”而不是“意见”? (2认同)
  • 也许当*六年前*发布此内容时,这符合答案,但根据今天网站的标准,它不符合答案。 (2认同)

Web*_*rsk 9

根据W3C建议书,隐藏USER AGENTS的脚本数据非常有用.

引自W3c页面:

在JavaScript中注释脚本JavaScript引擎允许字符串"<!--"出现在SCRIPT元素的开头,并忽略其他字符直到行结束.JavaScript将"//"解释为开始延伸到当前行末尾的注释.这需要隐藏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>
Run Code Online (Sandbox Code Playgroud)

  • 如果正在使用HTML 4.x. 这与XHTML完全不同. (2认同)

Que*_*tin 8

不,它是首次引入脚本元素时使用的变通方法的宿醉.今天没有浏览器无法理解脚本元素(即使它将其理解为"因为脚本被关闭或不受支持而应该被忽略的脚本").

在XHTML中,它们是有害的.

我曾经写过一些关于它的历史的东西.