【问题标题】: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 注释是: // 单行或 /* 多行

标签: javascript html comments


【解决方案1】:

这是向无法识别script 元素的浏览器隐藏javascript 的方法。第一行总是被忽略:Hiding script data from user agents

用 JavaScript 注释脚本

JavaScript 引擎允许字符串 "&lt;!--" 出现在 SCRIPT 元素的开头,并且 忽略其他字符,直到行尾。 JavaScript 将"//" 解释为开始注释并延伸到末尾 当前行。这是隐藏字符串"--&gt;" 所必需的 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>

【讨论】:

  • 是的;需要明确的是,&lt;!-- --&gt; 语法对于 Javascript cmets 是 not 有效的。只有一种特殊的语法可以用来从完全不知道的浏览器中隐藏 Javascript。 然而,你真的不应该再使用它了。多年来,所有浏览器都知道如何处理常规的 Javascript 标记,如果它们禁用或不支持 Javascript。
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 2021-09-17
  • 2014-04-06
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
相关资源
最近更新 更多