为啥 Javascript 会忽略单行 HTML 注释?
Posted
技术标签:
【中文标题】为啥 Javascript 会忽略单行 HTML 注释?【英文标题】:Why does Javascript ignore single line HTML Comments?为什么 Javascript 会忽略单行 HTML 注释? 【发布时间】:2015-02-10 06:10:21 【问题描述】:我刚刚在我的浏览器(Chrome 39、Windows 8)上尝试了这段代码:-
<html>
<body>
<script>
<!--
document.write("<h1>Hello</h1>");
-->
</script>
</body>
</html>
这会在浏览器上生成标题文本。但是当我稍作改动时——将 HTML 注释内容放在一行中,
<html>
<body>
<script>
<!-- document.write("<h1>Hello</h1>"); -->
</script>
</body>
</html>
这不显示任何内容。 为什么会这样?我不认为 HTML cmets 符合 javascript 标准。
附言我知道如何放置 javascript cmets。我只是想知道这种不稳定的行为。
【问题讨论】:
javascript 注释是: // 单行或 /* 多行 【参考方案1】:这是向无法识别script
元素的浏览器隐藏javascript 的方法。第一行总是被忽略:Hiding script data from user agents
用 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>
【讨论】:
是的;需要明确的是,<!-- -->
语法对于 Javascript cmets 是 not 有效的。只有一种特殊的语法可以用来从完全不知道的浏览器中隐藏 Javascript。 然而,你真的不应该再使用它了。多年来,所有浏览器都知道如何处理常规的 Javascript 标记,如果它们禁用或不支持 Javascript。以上是关于为啥 Javascript 会忽略单行 HTML 注释?的主要内容,如果未能解决你的问题,请参考以下文章