我有一个分类样式的网站,每页50-100张图像,一次从不同来源加载。有时我会收到404,而我正在设法解决这个问题。
在每个包含图像的元素上,我都有以下脚本:
$el.find('img').one('error', function() {
console.log('broken image detected');
// Replace broken image with something else
}).each(function() {
if(this.complete || $(this).height() > 0){
$(this).load();
}
});
但这似乎是随机触发的,没有发现所有404加载错误-特别是在页面的开头,实际上没有检测到404。在页面末尾看起来更好一些。
这是怎么回事?
我应该补充一点,这段JavaScript尚未在整个DOM完成加载之前进行初始化,但是我给人的印象是.each部分可以满足此要求?
另一个想法是插入一个内联负载错误检测器:
<img src="http://example.com/image.jpg" onerror="window.errorHandler(this);">
但是由于我的JavaScript在设计上是模块化的,所以我宁愿避免这种情况。
- - 编辑 - -
我已经通过在onerror处理程序上插入一个内联脚本解决了这个问题。它不是超级优雅,但是可以工作,因为侦听器与src属性同时插入。而且它不依赖jQuery。
通过在窗口中公开一个函数,我在前端代码中做了一些细致的工作来解决这个问题。
必须先设置所有用于处理负载或错误事件的侦听器,然后再设置img的src属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句