Ответ 1
Это работает без CSS:
<img src="some.jpg" onerror="this.src='alternative.jpg';">
Кажется, что даже работает, когда Javascript отключен.
Можно ли заменить стандартное разбитое изображение с помощью CSS или с помощью другого метода? Все мои изображения имеют одинаковый размер, и у меня есть прозрачность.
Я попытался обернуть все изображения с помощью фона div:
<div class="no_broken">
<img src="http://www.web.com/found.gif"/>
</div>
<div class="no_broken">
<img src="http://www.web.com/notfound.gif"/>
</div>
CSS
div.no_broken {
background-image: url(standard.gif);
}
div.no_broken, div.no_broken img {
width: 32px;
height: 32px;
display: block;
}
Но это будет отображать два изображения друг над другом, если IMG прозрачен.
Это работает без CSS:
<img src="some.jpg" onerror="this.src='alternative.jpg';">
Кажется, что даже работает, когда Javascript отключен.
Если вы хотите добавить javascript в микс, это должно хорошо работать с jQuery для обнаружения ошибок изображения и добавления некорректного класса CSS состояния к сломанным изображениям.
$(document).ready(function () {
$('.no_broken img').error(function () {
$(this).addClass('broken');
});
});
И тогда в вашем CSS вы могли бы иметь что-то вроде
div.no_broken, div.no_broken img {
width: 32px;
height: 32px;
display: block;
}
div.no_broken img.broken {
background-image: url(standard.gif);
content:"";
}
Думал, что я отвечу комментарий от kmoser в ответ. Очистка обработчика onerror - хорошая идея, поскольку возможны циклы.
Javascript
function epic(c) {
c.onerror='';
c.src='alternative.jpg';
};
HTML
<img src='some.jpg' onerror='epic(this)'>
Теперь мы отбрасываем эту эпическую функцию во все наши теги изображений на twiends, так как мы загружаем множество изображений социального профиля, срок действия которых истекает в какой-то момент в будущем.
Я не использую технологию, которую вы используете, но в ASP.net есть что-то, называемое адаптерами управления.
Я использовал это, чтобы захватить PreRender всех изображений и заменить imageurl, если imageurl не завершен.
Я не знаю, относится ли это вообще к вашей ситуации и, конечно же, не будет работать, если на пути есть путь, но не изображение.
Насколько я знаю, не существует свойства CSS, которое управляет отображением сломанных изображений. Может быть, есть специфические для браузера свойства? Возможно, вам придется прибегнуть к Javascript для повторения изображений на странице и замены их src, если они сломаны.
Этот код является JavaScript и будет работать только при включенном JS. Как это ни странно, это также работает, если в IE, если файл доступен с локальной машины (с файлом:///). Когда страница доступна с помощью http, она не будет работать без JS.