2016-11-17 49 views

回答

6

HTML5規範的狀態(我的重點):

評論必須先從四個字符序列U+003C LESS-THAN SIGNU+0021 EXCLAMATION MARKU+002D HYPHEN-MINUSU+002D HYPHEN-MINUS<!--)。這個操作序列之後,註釋可能有文字,有額外的限制,即文本不能以單一的>U+003E)字符開頭,也不能用U+002D HYPHEN-MINUS字符(-),接着是>U+003E)字符開始,

也不包含兩個連續U+002D HYPHEN-MINUS字符(--),

,也不與一個U+002D HYPHEN-MINUS字符(-)結束。最後,評論必須以三個字符序列U+002D HYPHEN-MINUS,U+002D HYPHEN-MINUS,U+003E GREATER-THAN SIGN-->)結束。

所以這就是爲什麼它抱怨。至於如何在不改變代碼的情況下修復它,那更棘手。

對C開發人員來說,它的工作原理並沒有什麼不同,他們爲什麼需要擔心未定義的行爲,因爲他們編寫的代碼工作正常。它在一個特定實現中正常工作的事實與便攜式代碼無關。

我的建議是實際更改代碼。畢竟,這是無效的,任何瀏覽器(當前或未來)都可以完全拒絕它。


順便後一些歷史挖掘,看來這是不允許的,因爲SGML,在其HTML爲基礎,有關於意見略有不同的規則。

在感應到<!--令牌時,解析器切換到註釋模式,其中註釋中實際允許使用>字符。如果遇到--序列,則它將更改爲其他模式,其中>結束註釋。

事實上,它似乎是這兩種模式之間的切換開關,所以類似<!-- >>>>> -- xyzzy -- >>>>> -->是可能的,但將>放在xyzzy將結束評論。

XML爲一體,沒有采取這種行爲,HTML現在已經修改了它遵循規則「並不在所有評論中使用--」,原因是,幾乎沒有人知道評論乖在SGML的方式,造成一些痛苦:-)

+1

同樣的[XML評論](https://www.w3.org/TR/xml/#sec-comments);該標準引用了與SGML的兼容性作爲原因。 – 2016-11-17 23:18:47

+0

感謝您的詳細解答 –