Vì vậy, dường như có một số cách để xử lý hình ảnh bị hỏng trên trang html. Tôi muốn biết cách sử dụng phổ biến là gì và cách nào được xem là phương pháp hay nhất?Cách tối ưu để xử lý hình ảnh bị hỏng là gì?
Để bắt đầu tôi đã xem xét một số bản thân mình thích:
function imgErr(source) {
source.src = /images/missing.jpg";
source.onerror = "";
return true;
}
<img src="test.jpg" alt="test" title="test" onerror="imgErr(this);" />
Ưu điểm: làm việc mọi lúc, sự kiện này sẽ luôn luôn bị bắt. Người dùng không bao giờ thấy hình ảnh bị hỏng. Dường như hoạt động tốt trên các trình duyệt. Nhược điểm: thẻ onerror yêu cầu trên mỗi hình ảnh, chức năng imgErr (nguồn) cần phải được người đứng đầu để bắt lỗi, làm chậm những người sử dụng trải qua thời gian tải
$('img').error(function(){
$(this).attr('src', 'missing.jpg');
});
Ưu điểm: rất ít mã, hoạt động trên tất cả hình ảnh mà không thay đổi đánh dấu của họ, có thể diễn ra bên ngoài của người đứng đầu Nhược điểm: có thể bỏ lỡ các sự kiện lỗi tùy thuộc vào tốc độ của các trang sự kiện onload, chậm cho người sử dụng trải nghiệm thời gian tải
$(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");
}
});
});
Ưu điểm: có thể được đặt ở bất cứ đâu trên trang, sẽ sửa hình ảnh bất kể khi nào nó chạy, không làm chậm người dùng s thời gian tải có kinh nghiệm Nhược điểm: hiển thị hình ảnh bị hỏng cho đến khi nó chạy tạo trải nghiệm người dùng kém
Trong trường hợp tải thời gian của tôi là vấn đề lớn nhất nhưng tôi không thể có tùy chọn cuối cùng hoạt động trong IE đúng khi thay đổi và không có hình ảnh bị hỏng như nhau!
Chúc mừng, Denis
Biến thể của câu trả lời này có thể là yêu cầu xử lý isapi-filter/apache-mod cho phần mở rộng tệp hình ảnh phổ biến để bạn không cần phải thay đổi tất cả thuộc tính img src của mình để trỏ đến trình xử lý của bạn . – grenade
Tôi đồng ý với điều này.Một trình xử lý chung sẽ là lựa chọn của tôi nếu tôi kiên quyết sửa các hình ảnh bị hỏng. – CeejeeB
Điều này có thể là một lựa chọn cho tôi để xem xét với MVC nhưng tôi đã hy vọng tôi có thể giữ nó đơn giản ở phía máy chủ! –