所以看起來很安靜的幾種方法來處理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