Если все изображения на странице возвращают перенаправление с ошибкой?

#javascript #image #redirect

#javascript #изображение #перенаправление

Вопрос:

Как я могу сделать так, чтобы, если все изображения на странице повреждены / не существуют, javascript перенаправлял на другую страницу?

Я хочу использовать это в скрипте типа галереи изображений.

Комментарии:

1. Используя чистый javascript? Вы случайно не используете фреймворк javascript, такой как jQuery, prototype и т.д.?

2. Я бы предпочел чистый javascript, но при необходимости я мог бы использовать jQuery или другой фреймворк.

Ответ №1:

Попробуйте этот скрипт:

 var imgCount = 0, imgErrorCount = 0;

function onImgError(increment) {
    if(increment) {
        imgErrorCount  ;
    }
    if(imgCount > 0 amp;amp; imgCount == imgErrorCount) {
        location = '/url-to-redirect';
    }
}
$(function(){
    imgCount = $('img').length;
    onImgError(false);
});
  

И для каждого элемента img:

 <img src="..." onerror="onImgError(true);" />
  

Комментарии:

1. @TheScrumMeister Неплохо, но почему бы вам не назначить onerror обработчик непосредственно в JS? Вот так: $('img').each(function() { $(this).get().onerror = function() { onImgError(true); };});

2.Похоже, это не сработало. Редактировать: $(function(){ Неперехваченная ошибка ссылки: $ не определен

3. @Jacob: Слишком поздно. Как только изображение вставлено в дерево DOM, оно немедленно начинает загружаться. Возможно, при попытке добавить обработчик onerror уже произошел сбой

4. Opps забыл добавить мой jquery! Виноват. Большое спасибо!

5. @jacob-relkin $('img') не будет включать будущие изображения, добавленные в dom, и если вы вызовете его в нижней части страницы, некоторые изображения, возможно, уже содержат ошибку. $('img').live() похоже, что это не работает.