<!-- <script type="text/javascript">/*<![CDATA[*/ c-- ;//]]></script> -->
当我在&lt; head&gt;中有上述行时在纯HTML页面的一部分,Firefox 3.5.5呈现尾随 - &gt;作为文字。如果我将c--改为c-则不然。有什么想法在这里发生了什么?由于一个非常大的脚本被碾压,我在我的页面上得到了一个工件。我可以将语句更改为c- = 1并暂时避免出现问题但是....我想知道什么位/字节正在咬我的a $$。
答案 0 :(得分:8)
这是由于Firefox严格执行SGML(HTML所基于的)评论。只有在标准模式下加载文档时才会出现这种情况(即存在DOCTYPE)。
第一个<!
开始发表评论。第一个--
输入允许>
个字符的部分。第二个--
(在您的脚本中)保留允许>
个字符的部分。 >
末尾的</script>
会结束评论。因此,以下-->
不再是注释的一部分,而是呈现为文本。
有关该问题的详尽指南,请参阅http://www.howtocreate.co.uk/SGMLComments.html。
还值得注意的是HTML 4 Specification说'作者应该避免在评论中加入两个或更多相邻的连字符'和HTML 5 Specification说评论不得'包含两个连续的U + 002D HYPHEN-MINUS字符( - )'。
正如您所发现的,解决方案是在评论中不包含--
。
答案 1 :(得分:1)
从技术上讲,您不允许在HTML(或XML)的注释中使用双连字符。因此,即使浏览器“允许”,如果它无效并且应该使HTML验证器失败。
答案 2 :(得分:0)
我不能复制这个。不会出现在3.0.1。