4

IE10 で次の Web ページを作成すると、タグが一致しないというエラーが発生します。

<!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 の微妙な部分かもしれませんが、まだ理解していません...

4

1 に答える 1

16

マークアップを application/xhtml+xml として提供しない限り、DIV (またはその他のブロック要素) を P に含めることはできません。text/html として提供されるすべてのページは、HTML パーサーによって解析されます (IE10 を含む最新のブラウザーでは、doctype に関係なく HTML5 パーサーです)。HTML では、P 要素のコンテンツ モデルは「フレージング コンテンツ」( HTML5 ) または「インライン」( HTML4 ) であり、その終了タグは HTML のすべてのバージョンでオプションです。そのため、パーサーはブロック要素の開始タグの前に P 要素を暗黙的に閉じます。また、すべてのブラウザーで、DIV 要素は P の子ではなく兄弟であり、p > div などの CSS セレクターは、text/html として提供されるページでは機能しません。

于 2013-06-29T21:25:46.490 に答える