2008-11-04 4 views
15

Возможно ли заменить стандартное сломанное изображение с помощью CSS или с помощью другого метода? Все мои изображения имеют одинаковый размер, и у меня есть прозрачность.Заменить недоступные изображения через 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 прозрачен.

ответ

33

Это работает без CSS:

<img src="some.jpg" onerror="this.src='alternative.jpg';"> 

кажется, даже работать, когда Javascript отключен.

+1

Это странно. выглядит как javascript для меня:/О, хорошо. это не первая и последняя нечетная функция, найденная в браузерах. – Gene 2008-11-04 13:29:18

+8

Это не работает, когда JavaScript отключен. И это вызовет бесконечный цикл, если альтернативу случайно отсутствует. – asiby 2013-04-14 21:49:31

0

Насколько я знаю, не существует свойства CSS, которое управляет отображением сломанных изображений. Может быть, есть специфические для браузера свойства? Возможно, вам придется прибегнуть к Javascript для повторения изображений на странице и замены их src, если они сломаны.

1

Я не использую технологию, которую вы используете, но в ASP.net есть что-то, что называется адаптерами управления.

Я использовал это, чтобы захватить PreRender всех изображений и заменить imageurl, если imageurl не завершен.

Я не знаю, относится ли это вообще к вашей ситуации и, конечно же, не будет работать, если на пути есть путь, но не изображение.

0

Этот код является JavaScript и будет работать только при включенном JS. Как это ни странно, это также работает, если в IE, если файл доступен с локальной машины (с файлом: ///). Когда страница будет доступна с http, она не будет работать без JS.

4

Если вы хотите добавить 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:""; 
} 
2

Мысль я пакет комментарий от kmoser в ответ. Очистка обработчика onerror - хорошая идея, поскольку возможны петли.

Javascript

function epic(c) { 
    c.onerror=''; 
    c.src='alternative.jpg'; 
}; 

HTML

<img src='some.jpg' onerror='epic(this)'> 

Мы бросаем эту эпическую функцию во все наши теги изображений теперь twiends, как мы тянуть в грузах изображений социальных профилей, которые все истекают в какой-то момент будущее.

Смежные вопросы