Ваш код правильный - также для Internet Explorer. Проблема в том, где вы запускаете свой код (мы не видим его здесь). Если он находится в конце страницы, может случиться так, что некоторые изображения уже загружены и событие onerror
просто не произойдет. Вы можете легко протестировать его с помощью решения, предложенного nnnnnn (встроенный скрипт). Однако, чтобы найти право и решение (для IE) и не изменять каждое встроенное img - вы можете попробовать применить проверку к некоторым атрибутам изображения, таким как complete
. Проблема в том, чтобы найти подходящее место для запуска такого теста. onload
кажется правильным, но у вас будет похожая проблема, как с onerror
- для определения события перед загрузкой изображения. В конце концов вы можете сделать немного подвох - запустив ваш цикл с некоторой задержкой (setTimeout
) - и выполнить такой код из window.onload. Таким образом, код может выглядеть так:
(function() {
var img = document.getElementsByTagName('img'),
i = 0, len = img.length;
for(; i < len; i++) {
if(!img[i].complete) {
this.style.visibility = 'hidden';
}
}
})();
Запустите этот код только для IE. На Chrome img[i].complete
может дать истину для сломанной ссылки на изображение.