2011-03-16 9 views
0

私は壊れた画像(JS & jQuery)を置き換えるために複数のソリューションを試しましたが、IEでは完全に動作しますが、FFではありません。Image Replacement(JS/JQuery)はIEでは動作しますが、FFでは動作しません

イメージはFFでこれとは異なる方法で処理されますか?

jQueryの例:

$("img").error(function(){ 
    $(this).unbind("error").attr("src", "nopic.jpg"); 
}); 

Javascriptの例:(IMGタグ内のonErrorイベントによってトリガ)

function noimage(img){ 
    img.onerror=""; 
    img.src="nopic.jpg"; 
    return true; } 

これらの例の両方はIEで完全に動作しますが、すべてではないFFです。何がありますか?

ありがとうございます!

+0

火の虫がインストールされていますか? firefoxのfirebugをチェックして、何について苦情をしているのかを見てください – corroded

+0

Firefoxでは、Tools - > Error Consoleに行きます。関連するものが見つかったかどうかを確認してください。あなたのコードは正常に見えます。 – Felix

+0

私はエラーコンソールをチェックして、何の問題も見ません。他のアイデア? –

答えて

0

あなたがローカルでテストしている、あなたは、ファイルのURLを指し示すことで、ありませんか?

ローカルサーバーであっても、実際のサーバーでテストを試してみてください。私はFirefoxがエラーをトリガするためにイメージGETから返されたHTTPステータスコードに依存していると信じています。 file:// ... URLからロードしている場合、サーバーは関与していないので、エラーは発生しません。 jQuery API docs for error()から

このイベントは正しくページがローカルで提供されたときに解雇することはできません。エラーは通常のHTTPステータスコードに依存しているため、URLがfile:プロトコルを使用している場合、通常はトリガーされません。

EDIT:我々はコメントで議論してきたように、これはいくつかの理由で、イントラネットサーバーは、の音によって、404(またはその他のエラーで欠落しているリソースに応答していないためであると思わ)

Firefoxはエラーを受け取らないので、エラーハンドラをトリガしません。これは正常な動作のようです。

あなたの問題はちょうど「私のサーバは欠落しているコンテンツの404エラーを返さない」と思っていますが、それを尋ねる前に証拠を収集するためにもう少し実験する必要があります。 SO ...)

+0

私は肯定的ではない私はあなたが意味することを理解しています。すべてのファイルは、当社のイントラネットサーバー(SharePoint)に格納されています。 イメージへのURLの例は次のようになります。http:// domain/folder/folder/Online/PublishingImages/images/picture.jpg' これは問題であるかもしれませんか? –

+0

@ Sunburntいいえ、明らかに私の推測は間違っていた!あなたが実際に "http:// ..."を取得してURLを開始している限り、大丈夫です。 Firefoxで 'http:// domain/folder/folder/Online/PublishingImages/images/some_missing_broken_image.jpg'に行くと実際に何が見えますか? 404エラーが出ますか? –

+0

ご協力ありがとうございます!興味深いことに、私は壊れた画像のURLを示すテキストを持っている白いページを手に入れます。 IEで404エラーが表示されます。 –

0

errorハンドラーを先にバインドする必要があります。の前にイメージのsrcを設定してください。したがってsrcをHTMLに設定し、JavaScriptでバインドすることはできません。

あなた自身でこれを証明することができます:http://jsfiddle.net/4Wcnj/2/

HTML:

<img width=500 id=img height=500 src="missing1"> 

はJavaScript:

// At this point, missing1 is having an error, but no handler set so far 

$("#img").error(function() { 
    alert("Missing: " + $(this).attr("src")); 
}); 

// The bind handler has been set, now if you set the src wrongly, you 
// get the alert 
$("img").attr("src", "missing2"); 
関連する問題