我有一个包含一堆图像的网页。有时图像不可用,因此客户端浏览器中会显示损坏的图像。
如何使用 jQuery 获取图像集,将其过滤为损坏的图像,然后替换 src?
-- 我认为使用 jQuery 会更容易做到这一点,但结果证明只使用纯 JavaScript 解决方案要容易得多,即 Prestaul 提供的解决方案。
我有一个包含一堆图像的网页。有时图像不可用,因此客户端浏览器中会显示损坏的图像。
如何使用 jQuery 获取图像集,将其过滤为损坏的图像,然后替换 src?
-- 我认为使用 jQuery 会更容易做到这一点,但结果证明只使用纯 JavaScript 解决方案要容易得多,即 Prestaul 提供的解决方案。
onError
使用 JavaScript处理图像以重新分配其源的事件:
function imgError(image) {
image.onerror = "";
image.src = "/images/noimage.gif";
return true;
}
<img src="image.png" onerror="imgError(this);"/>
或者没有 JavaScript 函数:
<img src="image.png" onError="this.onerror=null;this.src='/images/noimage.gif';" />
以下兼容性表列出了支持错误工具的浏览器:
我使用内置error
处理程序:
$("img").error(function () {
$(this).unbind("error").attr("src", "broken.gif");
});
编辑:该error()
方法在jquery 1.8及更高版本中已弃用。相反,您应该使用.on("error")
:
$("img").on("error", function () {
$(this).attr("src", "broken.gif");
});
这是一个独立的解决方案:
$(window).load(function() {
$('img').each(function() {
if ( !this.complete
|| typeof this.naturalWidth == "undefined"
|| this.naturalWidth == 0 ) {
// image was broken, replace with your new image
this.src = 'http://www.tranism.com/weblog/images/broken_ipod.gif';
}
});
});
我相信这就是你所追求的:jQuery.Preload
这是演示中的示例代码,您指定加载和未找到的图像,然后一切就绪:
jQuery('#images img').preload({
placeholder:'placeholder.jpg',
notFound:'notfound.jpg'
});