2009-12-04 43 views
1
<!-- <script type="text/javascript">/*<![CDATA[*/ c-- ;//]]></script> --> 

當我在一個普通的HTML頁面的<頭>部分上面一行,火狐3.5.5呈現拖尾 - >爲文本。如果我將c-改成c-,它不會。任何想法發生了什麼?由於一個非常大的腳本被搗毀,我在這個頁面上得到了一個神器。我可以將語句改爲c- = 1並且暫時避免這個問題,但是......我想知道什麼位/字節咬我的$$。雙連字符使得Firefox的渲染奇怪

+0

貌似這個錯誤是相關的:https://bugzilla.mozilla.org/show_bug.cgi?id=477200 – Rob 2009-12-05 00:00:23

+0

似乎相當接近。 – 2009-12-05 00:03:09

回答

8

這是由於Firefox實施SGML(基於HTML)的嚴格評論。這隻會發生在文檔以標準模式加載時(即有DOCTYPE)。

第一個<!開始評論。第一個--進入一個允許字符被允許使用>的部分。第二個--(在您的腳本中)留下允許字符允許的部分。 </script>結束時的>然後結束評論。以下-->因此不再是評論的一部分,並以文本呈現。

請參閱http://www.howtocreate.co.uk/SGMLComments.html以獲取有關此問題的全面指南。

其還值得注意的是,HTML 4 Specification說,「作者應該避免把內部意見兩個或多個相鄰的連字符」和HTML 5 Specification評論說不得「含有兩個連續的U + 002D連字符號字符( - )」。

正如您發現的,解決方案不包括在評論中間的--

+0

它可能不是完全嚴格的SGML,因爲它是在Firefox中實現的,但即使是HTML5也不允許在評論中使用兩個連續的連字符:http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html #註釋 – mercator 2009-12-05 00:20:02

0

我不能複製這個。不會在3.0.1上顯示。

+0

感謝您的檢查。在3.5.5中非常一致。 – 2009-12-05 00:05:24

+0

這確實發生在Firefox 3.0.5上,但只有當存在DOCTYPE時纔會發生。 – 2009-12-05 00:19:32

1

從技術上講,您不允許在HTML(或XML)的註釋中使用雙連字符。所以即使瀏覽器「允許」,如果它是無效的,並且會失敗一個HTML驗證器。

Comment section of HTML 4 Specification