Onerror с использованием фона: url()

Есть ли способ показать альтернативное изображение, если исходное изображение не найдено? Я знаю, чтобы выполнить это, выполнив что-то вроде ниже:

<img src="imagenotfound.gif" alt="Image not found" onError="this.src='imagefound.gif';" />

Но как насчет того, что вы делаете что-то вроде этого, как вы можете поймать, есть ли ошибка или если изображение не найдено?

<div style="background:url('myimage.gif')"></div>

Ответы

Ответ 1

Если myimage.gif не является прозрачным, вы можете использовать несколько фонов:

background: url('myimage.gif'), url('fallback.gif');

Этот способ fallback.gif будет отображаться только в том случае, если myimage.gif недоступен.

Обратите внимание, что fallback.gif может быть загружен, даже если myimage.gif доступен.


В качестве альтернативы, хотя и не поддерживается широко, CSS Images 3 представляет ноту image():

background: image('myimage.gif', 'fallback.gif');

Несколько <image-decl>s можно дать через запятую, в в этом случае функция представляет первое изображение, которое не является недействительный образ.

Ответ 2

С фоновыми изображениями нет события; вы сами проверяете.

Сделать HTTP-запрос (XML), и если вы получите ответ с код состояния ошибки или вообще никакого ответа (после таймаута), используйте другой ресурс изображения. Этот подход ограничен Политика одинакового происхождения.