Как тихо скрыть значок “Image not found”, когда src исходное изображение не найдено

Вы знаете, как скрыть классический "Image not found" значок от представленной страницы HTML, когда файл изображения не найден?

Какой-либо метод работы с помощью JavaScript/jQuery/CSS?

87
задан systempuntoout 3 September 2012 в 07:31
поделиться

4 ответа

Вы можете использовать событие onerror в JavaScript, чтобы действовать, когда изображение не загружается:

var img = document.getElementById("myImg");
img.onerror = function () { 
    this.style.display = "none";
}

В jQuery (поскольку вы спросили):

$("#myImg").error(function () { 
    $(this).hide(); 
});

Или для всех изображений:

$("img").error(function () { 
    $(this).hide();
    // or $(this).css({visibility:"hidden"}); 
});

Вы должны использовать visibility: hidden вместо .hide(), если скрытие изображений может изменить макет. Многие сайты в Интернете используют по умолчанию изображение "без изображения", указывая атрибут src на это изображение, когда указанное местоположение изображения недоступно.

99
ответ дан 24 November 2019 в 07:41
поделиться

Чтобы скрыть каждую ошибку изображения, просто добавьте этот код JavaScript внизу страницы (непосредственно перед закрывающим тегом тела):

(function() {
    var allimgs = document.images;
    for (var i = 0; i < allimgs.length; i++) {
        allimgs[i].onerror = function() {
            this.style.visibility = "hidden"; // Other elements aren't affected. 
        }
    }
})();
5
ответ дан 24 November 2019 в 07:41
поделиться

Проведя быстрое исследование ответа Энди Э , невозможно live () связать ошибку .

// won't work (chrome 5)
$('img').live('error', function(){
     $(this).css('visibility', 'hidden');
});

Таким образом, вы должны пойти как

$('<img/>', {
  src:    'http://www.notarget.com/fake.jpg',
  error:  function(e){
    $(this).css('visibility', 'hidden');
  }
}).appendTo(document.body);

напрямую связать обработчик событий ошибки при создании нового элемента.

4
ответ дан 24 November 2019 в 07:41
поделиться
<img onerror='this.style.display = "none"'>
112
ответ дан 24 November 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: