コールバックを使用してロジックを続行することを強くお勧めします。
function isOnline(sURL, callbacks){
var bOnline,
oImage = document.body.appendChild( document.createElement("img") );
oImage.onerror = callbacks.error;
oImage.onload = callbacks.success;
oImage.src = sURL;
}
そして、このような呼び出しの代わりに:
if(isOnline('some-src')) {
// good stuff
} else {
// bad stuff
}
次のような関数を使用する必要があります。
isOnline('some-src',{
success : function(){
// yey! image is online
},
error : function(){
// eerror loading image. boo :((
}
});
ある時点でコールバックを使用せずにまだテストしたい場合は、実際の画像オブジェクトを返して、ready
またはerror
フラグを固定できます。
function isOnline(sURL) {
var bOnline,
oImage = document.body.appendChild( document.createElement("img") );
oImage.ready = oImage.error = false;
oImage.onload = function(){
oImage.ready = true;
}
oImage.error= function(){
oImage.error = true;
}
oImage.src = sURL;
return oImage;
}
var img = isOnline('some-src');
// .. after some computing
if(img.ready) {
// yey image has loaded
} else if(img.error) {
// damn error :(
} else {
// still not loaded :-?
}