IE9でimageのonloadが走らない問題を無理やり解消する


IE9ではimageを読み込んだときにonloadが走らないという問題があります。
その他のブラウザでは、imageのsrcにキャッシュバスターをつけることで解決しますが、
IE9に関してはキャッシュバスターをつけても解決しません。

そこで、onload以外のプロパティを使ってonload的役割を無理やり実装しましょう。
imageにはwidth, heightというプロパティがあります。
そしてこれらのプロパティは、imageがまだ読み込まれてない段階では0という値を持っています。
読み込まれたとき、widthとheightにその画像の幅・高さがあてられます。

この値をsetIntervalで監視することで、画像が読み込まれたタイミングをとることができるという技です。

onload.js
var img = new Image();

setInterval(function(){
    if ( img.width > 0 ){
        alert( "image loaded." );
    }
}, 50);

img.src = "img/hoge.jpg";