2017-01-31 13 views
0

画像が特定の理由で読み込みに失敗したとき、たとえばDenied load of "url"をキャッチしようとしています。私はonerrorを使ってみましたが、それはすべてのエラーで起動します。 onerrorやそれ以外の方法を指定する方法はありますか?Javascriptで画像固有のエラーをキャッチ

答えて

0

あなたはこのよう

<img src="image.png" onerror="imgError(this);"/> 

でそれを行うことができます今、あなたはこのように、

function imgError(image) { 
image.onerror = ""; 
image.src = "/images/noimage.gif"; 
return true;} 
+0

を確認することができ、どのように私はそれらを区別することができますか?私のイメージは2つのエラー、 "拒否されたロード"、 "ERR_FAILED"をスローします。エラーごとに異なることをするためにWebページが必要です。 –

+0

何(イメージ)パラメータに入っていますか? –

+0

私はすべてのドキュメントを取得している、私はjavascriptでイメージを作成するため、私は推測している。 –

0

It'sないかのうに関数を呼び出すことができますが、通常は問題はこのようなものです: "エラー404リソースが見つかりました"または "リソースをロードできませんでした:net :: ERR_FILE_NOT_FOUND"。

しかし、GETタイプでajaxリクエストを作成し、エラーをキャッチすることができます。


 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<script> 
 
function CheckImageError(img){ 
 
    \t \t var urlimg = img.attributes.src.ownerElement.currentSrc ; 
 
    \t \t $.ajax({ 
 
    \t \t \t type:"GET", 
 
    \t \t \t url:urlimg , 
 
      context: img, 
 
    \t \t \t error:function(requestObject, error, errorThrown){ 
 
    \t \t \t \t // trace console.log or other action 
 
    \t \t \t }, 
 
    \t \t \t complete: function(){ 
 
    \t \t \t \t //do something 
 
       $(this).css("border","1px solid red"); 
 
    \t \t \t } 
 
    \t \t }) 
 
    \t } 
 
</script> 
 

 
<img onerror="CheckImageError(this)" src="image.gif">

あなたはあまりにもすべてのエラーのために働くこと、申し訳ありませんが、XMLHttpRequestオブジェクトのプロパティ

enter image description here

+0

さて、あなたの解決策を試しています。 currentSrcはなぜ私に ""を与えますか? img.attributes.src.ownerElementはimgオブジェクトにsrcを渡しますが、currentSrcはそれを ""にします。 –

+0

あなたのajaxリクエストはエラーコールバックを実行します;) –

+0

何とか完全なコールバックを実行しました。私はownerElement.currentSrcを消去しようとしましたが、エラーは実行されましたが、errorThrownは空でした。 –

関連する問題