ImageオブジェクトをappendChildしてはいけません
今までは、例えば
var oIMG = new Image(); oIMG.src = 'hoge.gif'; document.getElementById('fuga').appendChild(oIMG);
な感じで出来てたんで、イメージオブジェクトをappendChildしてたんですけど、
ふと、(ホントはcreateElement('IMG')とかでやらないといけないんじゃ…)って疑問が湧いてきたんで調べたところ、
重箱の隅かつ板違いだけど、 (new Image)と、HTML DOMのcreateElement('IMG')は等価ではない。前者が返すのはJavaScript 1.xのImageであり後者が返すのはHTML DOMのHTMLImageElement。 styleアトリビュートが必要で、かつDOMノードとして挿入するなら後者を使わねばならない。 まぁ大抵のDOM実装で、互いを単なるショートカットと見なすのだが Safariは意外にきっちりしていて、ImageをDOMノードとしては扱えないので注意。
Image オブジェクトを appendChild すべきではない TANABLOG
だそうで、やっぱ、しちゃ駄目だったんですね。