Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脚本标记中的HTML注释是最佳实践吗?_Javascript_Html - Fatal编程技术网

Javascript 脚本标记中的HTML注释是最佳实践吗?

Javascript 脚本标记中的HTML注释是最佳实践吗?,javascript,html,Javascript,Html,以下做法在我必须使用的内联JavaScript中相当常见: <script type="text/javascript"> <!-- // Code goes here //--> </script> 我知道关键是要防止与JavaScript不兼容的浏览器呈现源代码,但这仍然是当今的最佳实践吗?现在使用的绝大多数浏览器都可以解释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注释中不允许,因此脚本中的任何减量操作都是无效的
否,这是首次引入脚本元素时使用的解决方法的遗留问题。现在,没有浏览器无法理解脚本元素(即使它将其理解为“由于脚本已关闭或不受支持而应忽略的脚本”)

在XHTML中,它们是有害的


不久前我写了一些东西。

不久前停止使用这个。此外,根据,您可以从脚本标记中删除脚本,因为大多数浏览器中唯一可用的脚本语言是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>