2009-10-19 22 views
26

外部の画像が読み込まれない、または読み込みに時間がかかりすぎる場合、ローカルの代替画像を設定する最適な方法は何ですか?フォールバックイメージとタイムアウト - 外部コンテンツ。 Javascript

+0

ブリリアント!私はちょうど同じ質問をしようとしていました。私はすばやくGoogle検索を行い、この質問を見つけました。私はそれをサーバー側で行うことを考えていましたが、クライアント側ははるかに簡単です。 – Skilldrick

答えて

43

あなたがonerorハンドラを追加することができます。

+0

ああ、私は失敗について忘れてしまった。これは簡単かもしれませんが、私が下に投稿した解決策では、イメージを事前処理し、表示する前にその可用性をチェックすることができます。あなたが必要とするものによって異なります... – moxn

+0

恐ろしい!このような新しいトリックを学ぶと大好きです。私はいくつかのjQuery jiggeryポケリーに頼るつもりでした。 – MikeMurko

+0

ここでの問題は、画像が利用できないとみなされる時間です! 'onerror'イベントを呼び出すまで、ブラウザーアクティビティーの読み込みに時間がかかることがあります。 – SaidbakR

2

Image.completeプロパティを使用してください。

var img = new Image(w,h) 
img.src = "http://..."; 

img.completeがtrueの場合は、定期的にチェックし、それがまだn秒後にfalseことshuoldいくつかの代替機構を呼び出します。 oops.gifが何らかの理由でロードできない場合は、ブラウザが死なないように

<img src="http://example.com/somejpg.jpg" 
    onerror='this.onerror = null; this.src="./oops.gif"' /> 

注ハンドラにnullに設定ONERROR:

関連する問題