HTML5では、pre要素の直後の改行文字は、HTMLの文法レベルで取り除くこととなっている。
つまり、以下のようなマークアップがあったとして
<pre id='test'> a </pre>
document.getElementById("test").textContentは、"a\n"であるべきだ。なぜならば、HTMLの文法上、改行文字が取り除かれるのだから。
Chrome、Opera、Safari、Firefoxは、"\na\n"だった。これはHTML5の仕様に違反する。IEは、"a\n"だった。これは正しい挙動だ。
現状では、IE9以外は、pre要素を正しく実装していない。
IE9は正しくXHTMLを実装していなかった。
追記:innerTextではなく、textContentを使うべきである。
何かの間違いではありませんか?
ReplyDeleteFirefox 4でもChrome 10でもちゃんと"a\n"になりましたけど。
この1つ前の表示についても、余計な改行が入らず正しく表示されています。
間違っていました。
ReplyDeleteHTML syntax上でのみ、このルールは適用されます。
XHTMLでも適用するIE9は間違っています。
getElementIdになっていますよ。正しくはgetElementById
ReplyDelete