Image オブジェクトを appendChild すべきではない


Safari 1.x/2.x では、以下のコードは動かない。Safari 3.x では動く。

document.getElementById("hoge").appendChild(new Image());

なので、代わりに createElement を使う。

document.getElementById("hoge").appendChild(document.createElement("img"));

この掲示板によると (6 番の発言)

重箱の隅かつ板違いだけど、
(new Image)と、HTML DOMのcreateElement(‘IMG’)は等価ではない。
前者が返すのはJavaScript 1.xのImageであり
後者が返すのはHTML DOMのHTMLImageElement。
styleアトリビュートが必要で、かつDOMノードとして挿入するなら後者を使わねばならない。
まぁ大抵のDOM実装で、互いを単なるショートカットと見なすのだが
Safariは意外にきっちりしていて、ImageをDOMノードとしては扱えないので注意。

ということらしい。なるほど。

カテゴリー: JavaScript   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>