JavaScriptを使用してページに画像を追加しようとしています:
image = document.createElement('img');
image.onload = function(){
document.body.appendChild(image);
}
image.onerror = function(){
//display error
}
image.src = 'http://example.com/image.png';
この画像を表示するにはユーザーを認証する必要があります。認証されていない場合は、エラーメッセージを表示します。残念ながら、サーバーはHTTPエラーメッセージを返さず、リクエストを(ほとんど)空のページにリダイレクトするため、HTTP 200
、ただし警告Resource interpreted as Image but transferred with MIME type text/html
そして何も表示されていません。
このケースをどのように処理できますか?ユーザーが認証されていない場合、ウェブサーバーが提供するものを変更することはできません。
の中に image.onload
イベントリスナー、image.width
およびimage.height
は両方ともゼロ(できればimage.naturalWidth
およびimage.naturalHeight
、サポートされている場合)。
幅と高さが両方ともゼロの場合、画像は無効と見なされます。
// Usage:
loadImage('notexist.png');
function loadImage(src) {
var image = new Image;
image.onload = function() {
if ('naturalHeight' in this) {
if (this.naturalHeight + this.naturalWidth === 0) {
this.onerror();
return;
}
} else if (this.width + this.height == 0) {
this.onerror();
return;
}
// At this point, there's no error.
document.body.appendChild(image);
};
image.onerror = function() {
//display error
document.body.appendChild(
document.createTextNode('\nError loading as image: ' + this.src)
);
};
image.src = src;
}
これが私の解決策です。画像に404を指定した場合-200 OK(Pure Javascript)の配列の1つを挿入しようとします。画像は同じパスにある必要があります。それ以外の場合-私のfuncは「no-image.png」を返します。 壊れた画像を置き換えるjQuery/JavaScript