此代码隐藏了损坏的图像,但不幸的是它在IE中不起作用。
(function() {
var img = document.getElementsByTagName('img'),
i = 0, len = img.length;
for(; i < len; i++) {
img[i].onerror = function() {
this.style.visibility= 'hidden';
}
}
}());
请告诉我错误。
答案 0 :(得分:3)
是不是因为在onerror
事件发生之后才分配onerror
处理程序?
对于大多数用途,我可能不会推荐内联事件处理程序,但出于特定目的,您可以尝试:
<img src="..." onerror="this.style.visibility='hidden';">
(我知道在每个img标签上加上它会很痛苦,但我认为它更有可能起作用。)
答案 1 :(得分:0)
您的代码是正确的 - 也适用于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
上可以为损坏的图片链接提供支持。