为什么Javascript忽略单行HTML注释?

时间:2014-12-11 16:56:01

标签: javascript html comments

我刚刚在浏览器上尝试了此代码(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评论不符合Javascript标准。

P.S。我知道如何把javascript评论。我只是想知道这种不稳定的行为。

1 个答案:

答案 0 :(得分:5)

这是将javascript隐藏到无法识别script元素的浏览器的方法。第一行总是被忽略: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>