<!-- <script type="text/javascript">/*<![CDATA[*/ c-- ;//]]></script> -->
當我在一個普通的HTML頁面的<頭>部分上面一行,火狐3.5.5呈現拖尾 - >爲文本。如果我將c-改成c-,它不會。任何想法發生了什麼?由於一個非常大的腳本被搗毀,我在這個頁面上得到了一個神器。我可以將語句改爲c- = 1並且暫時避免這個問題,但是......我想知道什麼位/字節咬我的$$。雙連字符使得Firefox的渲染奇怪
<!-- <script type="text/javascript">/*<![CDATA[*/ c-- ;//]]></script> -->
當我在一個普通的HTML頁面的<頭>部分上面一行,火狐3.5.5呈現拖尾 - >爲文本。如果我將c-改成c-,它不會。任何想法發生了什麼?由於一個非常大的腳本被搗毀,我在這個頁面上得到了一個神器。我可以將語句改爲c- = 1並且暫時避免這個問題,但是......我想知道什麼位/字節咬我的$$。雙連字符使得Firefox的渲染奇怪
這是由於Firefox實施SGML(基於HTML)的嚴格評論。這隻會發生在文檔以標準模式加載時(即有DOCTYPE)。
第一個<!
開始評論。第一個--
進入一個允許字符被允許使用>
的部分。第二個--
(在您的腳本中)留下允許字符允許的部分。 </script>
結束時的>
然後結束評論。以下-->
因此不再是評論的一部分,並以文本呈現。
請參閱http://www.howtocreate.co.uk/SGMLComments.html以獲取有關此問題的全面指南。
其還值得注意的是,HTML 4 Specification說,「作者應該避免把內部意見兩個或多個相鄰的連字符」和HTML 5 Specification評論說不得「含有兩個連續的U + 002D連字符號字符( - )」。
正如您發現的,解決方案不包括在評論中間的--
。
它可能不是完全嚴格的SGML,因爲它是在Firefox中實現的,但即使是HTML5也不允許在評論中使用兩個連續的連字符:http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html #註釋 – mercator 2009-12-05 00:20:02
我不能複製這個。不會在3.0.1上顯示。
感謝您的檢查。在3.5.5中非常一致。 – 2009-12-05 00:05:24
這確實發生在Firefox 3.0.5上,但只有當存在DOCTYPE時纔會發生。 – 2009-12-05 00:19:32
從技術上講,您不允許在HTML(或XML)的註釋中使用雙連字符。所以即使瀏覽器「允許」,如果它是無效的,並且會失敗一個HTML驗證器。
貌似這個錯誤是相關的:https://bugzilla.mozilla.org/show_bug.cgi?id=477200 – Rob 2009-12-05 00:00:23
似乎相當接近。 – 2009-12-05 00:03:09