次のソース コードは、次の結果を警告します。
Internet Explorer 7 : 29
Firefox 3.0.3 : 37 (正)
Safari 3.0.4 (523.12.9) : 38
Google Chrome 0.3.154.9 : 38
次の事実は無視してください。
- Webkit (Safari/Chrome) ブラウザーは、body タグの末尾に追加のテキスト ノードを挿入します。
- Internet Explorer では、本来あるべきように、空白ノードに改行がありません。
- Internet Explorer には先頭の空白ノードがありません (<form> タグの前に明らかな空白がありますが、一致するテキスト ノードはありません)。
テスト ページのタグのうち、次のタグは DOM の後に空白テキスト ノードが挿入されていません: form
、input[@radio]
、div
、span
、table
、。ul
a
私の質問は、これらのノードが Internet Explorer で例外になる理由は何ですか? これらのノードの後に空白が挿入されず、他のノードに挿入されるのはなぜですか?
この動作は、タグの順序を切り替え、doctype を XHTML に切り替えた場合と同じです (標準モードを維持しながら)。
背景情報を少し提供するリンクを次に示しますが、理想的な解決策はありません。この問題の解決策はないかもしれませんが、私はその動作に興味があります。
ありがとうインターネット、ザック
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function countNodes()
{
alert(document.getElementsByTagName('body')[0].childNodes.length);
}
</script>
</head>
<body onload="countNodes()">
<form></form>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="text"/>
<input type="password"/>
<input type="file"/>
<input type="hidden"/>
<input type="checkbox"/>
<input type="radio"/>
<button></button>
<select></select>
<textarea></textarea>
<div></div>
<span></span>
<table></table>
<ul></ul>
<a></a>
</body>
</html>