Можно ли проверить, возвращает ли файл ошибку 404, если она находится на другом сервере с javascript или jQuery?


Answers

Вы можете создать объект 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
    }
});

Вот демо.

Question

Можно ли проверить, возвращает ли файл ошибку 404, если она находится на другом сервере, используя jQuery / javascript?

Я использую 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, который его удерживает.




Это сработало для меня (мой находится в coffeescript).

checkImages = ->
  $("img").each ->
    $(this).error ->
      $(this).attr("src", "../default/image.jpg")

$(document).on('page:load', checkImages)

Я предполагаю, что эквивалент javascript - это что-то вроде

function checkImages() {
  $("img").each(function() {
    $(this).error(function() {
      $(this).attr("src", "../default/image.jpg");
    });
  });
};

$(document).on("page:load", checkImages);





Links