【问题标题】:Commenting out <script> closing tag. Syntax OK or not?注释掉 <script> 结束标记。语法好不好?
【发布时间】:2012-06-07 05:22:18
【问题描述】:

在处理客户提供代码的项目时,我偶尔会看到这种情况:

<script src="xx" type="xx">//</script>

我一直想知道这是否是正确的语法。
它至少不会打扰任何浏览器。但是它非常糟糕地弄乱了我的编辑器的语法荧光笔,因为它在注释掉时无法识别结束标记。

另一种风味是:

<script>
  //some code
//</script>

我只知道这个是为了防止代码泄漏到页面中:

<script>
 //<!--
 //some code
 //-->
</script>

我完全不知道其他人想要阻止什么。

【问题讨论】:

    标签: javascript html syntax


    【解决方案1】:

    写成&lt;script src="xx" type="xx"&gt;//&lt;/script&gt; 在形式上是正确的语法,因为解析HTML 文档,将// 视为数据,然后丢弃该数据,因为元素具有src 属性。它当然也符合 JavaScript 语法,构成一个空程序,带有一个空注释。

    不过,// 没有任何用处。一个非空的评论是否有用是有争议的; HTML5 草案表明它可以,请参阅Inline documentation for external scripts 那里。

    使用//&lt;/script&gt; 形式上是正确的,但没用。

    一个被搞砸的语法荧光笔有一个错误(它没有被编程为正确解析script元素)。

    像你提到的“防止代码泄漏到页面中”的构造,在脚本代码中包含&lt;!----&gt;,比无用的代码更糟糕。它们毫无用处,因为没有人再使用 Netscape 1。它们比无用更糟糕,因为人们在尝试使用它们时会出现输入错误(并且因为根据 XHTML 规则,类似注释的构造 注释,并且可能会被浏览器删除)。此外,您提到的特定构造甚至无法在 Netscape 1 上发挥作用;它会使字符“//”出现在页面内容中。

    【讨论】:

      【解决方案2】:

      这仍然是一个有效的 javascript 行。 这是一条空白评论。

      //</script>
      

      所以浏览器不会有任何问题。 如果你的语法高亮不识别它,那是语法高亮的问题。

      是的,我同意如果代码末尾没有空白注释会更容易阅读。

      【讨论】:

        【解决方案3】:

        没关系,因为双斜杠 cets JavaScript 代码。由于 script 是 HTML 标签,所以不会有任何效果。

        【讨论】:

          【解决方案4】:

          我猜想,我怀疑 &lt;script ...&gt;//&lt;/script&gt; 最初是在从 XML 生成 HTML 页面时完成的,其中 // 提供了一些空但具体的内容来阻止 XML 序列化程序将脚本标记折叠成自动关闭标记&lt;script ... /&gt; 是好的 XML 但不好的 HTML。

          从那以后它很可能已经被货物狂热复制了很多次。

          【讨论】:

            猜你喜欢
            • 2012-08-31
            • 2015-04-21
            • 2013-02-19
            • 1970-01-01
            • 2018-10-23
            • 2013-04-29
            • 1970-01-01
            • 2011-04-09
            • 2011-02-14
            相关资源
            最近更新 更多