我有一个工作完美的.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
感谢您的详细解答 –