Zastanawiam się, dlaczego następujące nie działają dla mnie (wypróbowany z Chrome i FF):

<img src="" />
<img src="asdf" />

// Change broken images to a placeholder image
$('img').error(function(){
    $(this).attr('src', 'http://placehold.it/100');
});

Oto jsfiddle

-1
skube 6 grudzień 2013, 01:11

2 odpowiedzi

Najlepsza odpowiedź

Wydarzenie onerror zostało już zwolnione, więc musisz utworzyć nowy obraz i słuchać wydarzenia błędu na tym:

$('img').each(function() {
    var img  = new Image(),
        self = this;

    img.onerror = function(){
        $(self).prop('src', 'http://placehold.it/100');
    }

    img.src = this.src;
});

SKRZYPCE

4
adeneo 5 grudzień 2013, 21:15

To powinno odpowiedzieć na twoje pytanie

Prędkość zdarzenia musi być dołączona przed wystąpieniem przeglądarki zdarzenia błędu, dlatego przykład ustawia atrybut SRC po podłączeniu obsługi przewodnika. Ponadto zdarzenie błędu może nie być prawidłowo zwolnione, gdy strona jest podawana lokalnie; Błąd opiera się na kategoriach stanu HTTP i na ogół nie zostanie wyzwolony, jeśli adres URL użyje pliku: protokolu.

http://api.jquery.com/Error/

2
ProllyGeek 5 grudzień 2013, 21:15