代码之家  ›  专栏  ›  技术社区  ›  No Refunds No Returns

脚本中的双连字符使Firefox呈现出奇怪的效果

  •  1
  • No Refunds No Returns  · 技术社区  · 15 年前
    <!-- <script type="text/javascript">/*<![CDATA[*/  c-- ;//]]></script> -->
    

    当我在普通HTML页面的<head>部分有上述行时,firefox 3.5.5会将后面的>呈现为文本。如果我把C改成C,就不会了。有什么想法吗?由于一个非常大的脚本被压缩,我在我的页面上得到了一个工件。我可以将语句改为c-=1,暂时避免这个问题,但是……我想知道什么比特/字节在咬我的A美元。

    3 回复  |  直到 7 年前
        1
  •  8
  •   Phil Ross Matt Johnson-Pint    7 年前

    这是因为火狐严格地实现了SGML(基于HTML)注释。只有在以标准模式加载文档(即存在doctype)时才会发生这种情况。

    第一 <! 开始注释。第一 -- 输入一个节,其中 > 允许使用字符。第二 —— (在脚本中)离开 > 允许使用字符。这个 > 在最后 </script> 然后结束注释。以下 --> 所以不再是注释的一部分,而是作为文本呈现。

    参见 http://www.howtocreate.co.uk/SGMLComments.html 对于这个问题的全面指导。

    值得注意的是, HTML 4 Specification 表示“作者应避免在注释中放置两个或多个相邻连字符”,并且 HTML 5 Specification 表示注释不能“包含两个连续的u+002d连字符减号(--)”。

    正如你所发现的,解决办法是不包括 —— 在评论的中间。

        2
  •  1
  •   James Keesey    15 年前

    从技术上讲,不允许在HTML(或XML)的注释中使用双连字符。因此,即使浏览器“允许”它是无效的,应该失败的HTML验证器。

    Comment section of HTML 4 Specification

        3
  •  0
  •   dhorn    15 年前

    我不能复制这个。不会出现在3.0.1上。