【问题标题】:IE10 giving me error 1509, unmatched end tagIE10 给我错误 1509,不匹配的结束标签
【发布时间】:2013-10-12 13:30:41
【问题描述】:

在 IE10 中,我创建了以下网页,并得到一个 unmatched tag 错误:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
    <p>
        <div>
            &nbsp;
        </div>
    </p>
</body>
</html>

我发现这段代码没有问题。我已将其范围缩小为在段落中包含一个 div 作为触发问题的原因。 IE10 报告:

HTML1509:结束标记不匹配。
test.php,第 12 行字符 2

并且指向段落结束标记。早期的我可能只是忽略了它。但我不能再让自己这样做了。

我在这个网站上搜索过类似的东西,但只发现了合法的语法错误;换句话说,对错误的有效解释。我知道 IE 已经脑残了,但即使是在 Bill MSFT 之后,也不能傻到让这样的错误通过(他们可以吗?)。所以我假设是我,直到证明不是这样。可能是 HTML5 的一些微妙之处我还没有摸透...

【问题讨论】:

  • 如果您在validator.w3.org/check 中验证您的标记,您也会在那里看到错误。因此,这一次是 IE 正确严格,而大多数其他浏览器可能只是默默地修复您的标记以使其有效。
  • 可能 IE 10 尝试通过在 &lt;div&gt; 之前关闭 &lt;p&gt; 来修复您的页面,但不够聪明,无法在 &lt;/div&gt; 之后重新打开新的 &lt;p&gt; 跨度>
  • @Gus 这不是聪明的问题,IE 试图紧跟当前的标准。与 IE 不同,其他浏览器只会消耗我们编写的任何垃圾内容。
  • @RobW 浏览器修复代码从一开始就是一个祸根,促进了草率的编码和臃肿的浏览器渲染代码。如果它实际上是在执行规则,它会说
    not allowed in

    。但是,由于这与实际执行标准的效果几乎相同,我很高兴看到它。如果信息有意义,那就太好了

标签: html internet-explorer-10


【解决方案1】:

您不能在 P 中包含 DIV(或任何其他块元素),除非您将标记作为 application/xhtml+xml。所有作为 text/html 的页面都由 HTML 解析器解析(在现代浏览器中,包括 IE10,它是 HTML5 解析器,无论文档类型如何)。在 HTML 中,the content model of P element 是“短语内容”(HTML5)或“内联”(HTML4),其结束标记在所有 HTML 版本中都是可选的。所以解析器隐式地关闭任何块元素的开始标记之前的 P 元素。在所有浏览器中,DIV 元素将不是 P 的子元素,而是兄弟元素,并且像 p > div 这样的 CSS 选择器将永远不会对作为 text/html 的页面起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2014-10-19
    • 2020-07-16
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多