【发布时间】:2013-10-12 13:30:41
【问题描述】:
在 IE10 中,我创建了以下网页,并得到一个 unmatched tag 错误:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<p>
<div>
</div>
</p>
</body>
</html>
我发现这段代码没有问题。我已将其范围缩小为在段落中包含一个 div 作为触发问题的原因。 IE10 报告:
HTML1509:结束标记不匹配。
test.php,第 12 行字符 2
并且指向段落结束标记。早期的我可能只是忽略了它。但我不能再让自己这样做了。
我在这个网站上搜索过类似的东西,但只发现了合法的语法错误;换句话说,对错误的有效解释。我知道 IE 已经脑残了,但即使是在 Bill MSFT 之后,也不能傻到让这样的错误通过(他们可以吗?)。所以我假设是我,直到证明不是这样。可能是 HTML5 的一些微妙之处我还没有摸透...
【问题讨论】:
-
如果您在validator.w3.org/check 中验证您的标记,您也会在那里看到错误。因此,这一次是 IE 正确严格,而大多数其他浏览器可能只是默默地修复您的标记以使其有效。
-
可能 IE 10 尝试通过在
<div>之前关闭<p>来修复您的页面,但不够聪明,无法在</div>之后重新打开新的<p>跨度> -
@Gus 这不是聪明的问题,IE 试图紧跟当前的标准。与 IE 不同,其他浏览器只会消耗我们编写的任何垃圾内容。
-
@RobW 浏览器修复代码从一开始就是一个祸根,促进了草率的编码和臃肿的浏览器渲染代码。如果它实际上是在执行规则,它会说not allowed in
。但是,由于这与实际执行标准的效果几乎相同,我很高兴看到它。如果信息有意义,那就太好了