2013-10-15 8 views
6

YouTubeは既存のサムネイルではないのに404を返すが、有効な画像データ(破損したビデオサムネイル)を返すので、Imageでチェックすることはできない画像リンクが404を返すが、まだ有効な画像であることを検出する方法

var img = new Image(); 
img.onload = function() { alert("found")}; 
img.onerror = function() { alert("not found") }; 
img.src = "http://img.youtube.com/vi/aaaa/1.jpg"; 

実行時に "found"と表示されます。画像データを実際に読み込むことができるかどうかを検出する方法はありますか?

リンクが標準のYouTube「壊れた動画」のサムネイル画像データを返すことが検出された場合にもいいです。

+0

あなたはHTTPヘッダーでそれを行うことができますが、往復の費用がかかります。 http://stackoverflow.com/questions/220231/accessing-the-web-pages-http-headers-in-javascript ps; httpのレスポンスコード404とcontent-typeのimage/jpegで識別します。 –

+0

@Marvin Smit:しかし、私はYouTubeに向けてAJAXリクエストをしなくてはなりませんか?なぜなら、現在のドキュメントのものではなく、YouTubeのイメージのヘッダーが必要だからです。また、私は元のポリシーの制限が同じため、YouTubeにajaxリクエストを送信できません。 – Tom

+0

「アクセス制御許可元」ヘッダーを制御できる場合にのみ可能ですが、追加のラウンドトリップの隣にはオプションがない可能性がありますが、コストがかかる可能性があります。 –

答えて

1

このような場合の回避策として、画像サイズを確認することをおすすめします。通常、サムネイルは大きいので、返される画像が120x90pxの場合、それは404画像と見なすことができます。

唯一の方法は、画像を通過する前にHTTPヘッダーをチェックできるPHPスクリプト経由でロードすることです。

+0

それは残念ですが、私はあなたが正しいと思います。私はちょうどこのようなものを試しました:http://stackoverflow.com/questions/26630650/detect-404-error-on-page-loadしかし、クロスドメインエラーが発生しました:/ – DAB

関連する問題