所以看起来很安静的几种方法来处理HTML页面上的破碎图像。我想知道什么方式在流行使用,哪些方式被视为最佳实践?处理破损图像的最佳方法是什么?
要开始我已经看了一些自己喜欢:
function imgErr(source) {
source.src = /images/missing.jpg";
source.onerror = "";
return true;
}
<img src="test.jpg" alt="test" title="test" onerror="imgErr(this);" />
优点:工作每次,该事件将永远被抓住。用户从未看到破碎的图像。似乎在整个浏览器中运行良好。 缺点:每个图像所需的onerror标签,功能imgErr(源)需要在头部赶错误,减缓用户遇到加载时间
$('img').error(function(){
$(this).attr('src', 'missing.jpg');
});
优点:很少的代码,适用于所有图片在不改变他们的标记,可以是头 缺点以外的地方:可以错过取决于页onload事件的速度误差事件,减缓用户遇到加载时间
$(window).load(function() {
$("img").each(function() {
if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
var src = $(this).attr("src");
var suffix = src.substring(src.length - 6, src.length).split('.')[0];
suffix = suffix.charAt(suffix.length - 1);
$(this).attr("src", "/static/images/generic/missing_" + suffix + ".jpg");
}
});
});
优点:可以放在任何地方在页面上,无论何时运行,都不会影响用户的速度s经验加载时间 缺点:显示一个破损的图像,直到它运行创建一个糟糕的用户体验
在我的情况加载时间是最大的问题,但我不能得到最后的选择,正确地在IE中工作,因为它改变了破并没有破碎的图像一样!
干杯, 丹尼斯
这个答案的变化可能让对常见的图像文件扩展名的ISAPI过滤器/ Apache的国防部处理的请求,这样你就不必改变所有IMG SRC属性指向你的处理程序。 – grenade 2010-01-12 16:55:41
我同意这一点。如果我坚决修复损坏的图像,通用处理程序将是我的选择。 – CeejeeB 2010-01-12 16:56:46
这可能是我选择使用MVC的一种选择,但我希望我可以在服务器端保持简单! – 2010-01-12 17:00:26