12

jQuery/javascript を使用して別のサーバー上にある場合、ファイルが 404 エラーを返すかどうかを確認することは可能ですか?

YouTube API を使用して、埋め込んでいるビデオの HD スクリーンショットを取得していますが、返される JSON には、ビデオの HD スクリーンショットが存在するかどうかが示されません。

スクリーンショットの URL は通常、 http: //img.youtube.com/vi/ + video.ID + /maxresdefault.jpg です。

しかし、それが存在しない場合、私はこの醜い低解像度の灰色の POS を取得します: http://img.youtube.com/vi/MAyTES9gDAU/maxresdefault.jpg

したがって、基本的には、スクリーンショットが存在するかどうかを確認し、存在しない場合はdisplay: noneそれを保持する div に適用します。

4

5 に答える 5

5

<img>その画像を指す要素を作成し、onerrorイベントを処理して非表示にします。

于 2012-07-05T02:55:58.210 に答える
5

Imageオブジェクトを作成し、 および を処理できonloadますonerror。それは画像に対してのみ機能します。

function checkExists(imageUrl, callback) {
    var img = new Image();

    img.onerror = function() {
        callback(false);
    };

    img.onload = function() {
        callback(true);
    };

    img.src = imageUrl;
}

次のように使用します。

checkExists(yourVideoUrl, function(exists) {
    if(!exists) {
        // Hide the image
    }
});

これがデモです。

于 2012-07-05T02:56:26.350 に答える
1

ただし、minitechの回答は404のチェックには機能します...

YouTube の場合、彼らは 404 を返す代わりに独自の処理を行い、「適切な」エラー画像を表示します。

YouTube には、動画 ID が有効かどうかを確認する API があります。YouTube ビデオ ID が存在するか有効かを確認する方法については、次の投稿をご覧ください: https://groups.google.com/forum/?fromgroups=#!topic/youtube-api-gdata/oAztQ3f1tcM

ビデオが存在することを確認したら、画像のロードを試みることができます。ビデオが存在しない場合は、必要に応じてそのケースを処理できます。

于 2013-03-27T17:39:10.003 に答える
0

デフォルトの灰色の画像に対して追加のチェックを追加する必要があります。

function checkExists(imageUrl, callback) {
    var img = new Image();

    img.onerror = function() {
        callback(false);
    };

    img.onload = function() {
        //check for a default (grey) image
        if (this.width == 120) {
           callback(false);
        }else {
           callback(true);
        }
    };

    img.src = imageUrl;
}

デモ

于 2016-02-26T17:16:57.487 に答える