まあ、標準なのに Cross もへったくれもないはずなんだけど、そうはいかないのが現実。
ブラウザと DOM 仕様のそれぞれのリリース時期を考えるとやむなしと思える部分もあるのだが、 IE は DOM1 を一部サポート、 Mozilla は DOM2 を一部サポート、といった感がある。
それぞれがサポートしているプロパティについて比較すると、次のような違いが見られる。
<!--[if IE 5]> ~ <![endif]-->
という CommentNode 内の CDATA を解釈して、当該 CommentNode と置換する。
結果として、この CommentNode 自体は DOM から抹消される。
挙動としては処理命令に近い。次に挙げる点は、実装されてはいるが仕様の定義と異なる挙動をするものである。 バグもしくは後方互換性の為の実装と思われる。「~に未対応」というものは除外。
<![if ! IE 5]> ~ <![endif]>
の内容を一切認識しない。
DOM から完全に隠蔽され、その内容へはアクセス不能である。
そもそもこれは HTML/XML/XHTML のどの仕様でも buggy な記述で
現行の主な Web ブラウザがたまたまこの記述を注釈として扱うだけだと思うのだが
その辺について知識のある方教えてください。ここで挙げるよりも、Bugzilla を見たほうがよいだろう。
ハマるとなかなか抜け出せなさそうなこと。というか自分がしばらくハマったこと。
IE Property Attribute | IE getAttribute() | Mozilla Property Attribute | Mozilla getAttribute() | |
A HREF | 絶対URI | 絶対URI | 絶対URI | 記述通り |
IMG SRC | 絶対URI | 絶対URI | 絶対URI | 記述通り |
LINK HREF | 記述通り | 記述通り | 絶対URI | 記述通り |