脚本标记中的HTML注释是最佳实践吗?
下面的练习在我必须使用的内联JavaScript中是相当普遍的:
<script type="text/javascript"> <!-- // Code goes here //--> </script>
我知道重点在于防止与JavaScript不兼容的浏览器呈现源代码,但这仍然是今天的最佳做法吗? 今天使用的绝大多数浏览器都可以解释JavaScript, 即使是现代的移动设备通常也没有问题。
至于“为什么不呢? 问题:我最近不得不花了几个小时来debugging一个问题,在某个页面的深层隐藏的脚本标签末尾有人把'//'放在' – >'的前面,这导致了神秘的JavaScript错误。
你是做什么? 这仍然被认为是“最佳做法”吗?
重要的是,现在,一个特定的浏览器是否支持JavaScript是不相干的(显然绝大多数都是这样) – 这是无关紧要的,因为几乎所有的理解脚本块,这意味着他们知道忽略JavaScript,即使他们不能解释它。
Matt Kruse在他的JavaScript Toolbox网站上给出了一个稍微更详细的解释 ,以便为什么不在脚本块中使用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>
今天没有普遍使用的浏览器都不知道<script>标签,所以不再需要隐藏javascript源代码。 事实上,这可能是有害的,原因如下:
- 在XHTML文档中,源代码实际上将隐藏在所有浏览器中,并且变得毫无用处
- – 在HTML注释中是不允许的,所以脚本中的任何递减操作都是无效的
我已经停止了。 在某个时候,你只需要放开你的NCSA马赛克。
不,从第一次引入脚本元素时使用的解决方法来说,这是一个宿醉。 今天没有浏览器无法理解脚本元素(即使它理解为“由于脚本被closures或不被支持应被忽略的脚本”)。
在XHTML中,它们是有害的。
我写了一些关于它的历史 。
根据W3C推荐 ,隐藏来自USER AGENTS的脚本数据主要是有用的。
从W3c页面引用:
在JavaScript中评论脚本JavaScript引擎允许在SCRIPT元素的开始处出现string"<!--"
,并在行尾之前忽略更多的字符。 JavaScript将“//”解释为开始注释,延伸到当前行的末尾。 这是需要从JavaScriptparsing器隐藏string“ – >”。
<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>
停止使用这一段时间了。 此外,根据Douglas Crockford的说法,您可以从脚本标记中删除type属性 ,因为大多数浏览器中唯一可用的脚本语言是JavaScript。
如果你手动input,我build议你总是使用外部的js文件,这将有很大的帮助。
关于您的担忧:大多数浏览器今天都是JavaScript安全的。 然而有时候人们可能会编写简单的parsing器来直接获取HTML,而且我必须说,安全报价对于这些客户来说真的很有帮助。 像老Lynx这样的一些非JS客户也会从中受益。
如果在脚本标记之间不包含文本文本 – 也就是说,如果从src文件加载脚本,则可以忘记注释。
我将推荐使用CDATA部分, 如此问题中所述 。
我几年前就停止了。 在这个时代,你真的不需要它。
我不这样做,但有一天我去w3cvalidation我的密码保护网站。 所以我不得不使用他们的直接input法。 它抱怨我的JavaScript,所以我把评论的一切都很好。