2011-04-26

preの改行文字の除去について

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を使うべきである。

3 comments:

Anonymous said...

何かの間違いではありませんか?
Firefox 4でもChrome 10でもちゃんと"a\n"になりましたけど。
この1つ前の表示についても、余計な改行が入らず正しく表示されています。

江添亮 said...

間違っていました。
HTML syntax上でのみ、このルールは適用されます。
XHTMLでも適用するIE9は間違っています。

Anonymous said...

getElementIdになっていますよ。正しくはgetElementById