Image オブジェクトを appendChild すべきではない
December 04, 2007category: JavaScript
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ノードとしては扱えないので注意。
ということらしい。なるほど。

comments