我有一個工作完美的.html文件,但由於某些原因Sublime 3決定它有無效的代碼,檢查圖像如下:爲什麼崇高考慮<!-------(多個破折號)的語法錯誤
任何想法,爲什麼發生的事情,以及如何解決它,而無需修改代碼?
我有一個工作完美的.html文件,但由於某些原因Sublime 3決定它有無效的代碼,檢查圖像如下:爲什麼崇高考慮<!-------(多個破折號)的語法錯誤
任何想法,爲什麼發生的事情,以及如何解決它,而無需修改代碼?
HTML5規範的狀態(我的重點):
評論必須先從四個字符序列
U+003C LESS-THAN SIGN
,U+0021 EXCLAMATION MARK
,U+002D HYPHEN-MINUS
,U+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的方式,造成一些痛苦:-)
同樣的[XML評論](https://www.w3.org/TR/xml/#sec-comments);該標準引用了與SGML的兼容性作爲原因。 – 2016-11-17 23:18:47
感謝您的詳細解答 –