Như đã nêu trước đây, câu trả lời Xavi sẽ không hoạt động nếu hình ảnh nằm trong bộ đệm. Vấn đề phản ứng với bộ webkit không kích hoạt sự kiện tải trên các hình ảnh được lưu trong bộ nhớ cache, do đó, nếu độ rộng / chiều cao không được đặt rõ ràng trong thẻ img, cách duy nhất đáng tin cậy để có được hình ảnh là chờ window.load
sự kiện được kích hoạt.
Sự window.load
kiện sẽ luôn diễn ra , vì vậy thật an toàn khi truy cập chiều rộng / chiều cao và img sau đó mà không có bất kỳ mẹo nào.
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
Nếu bạn cần lấy kích thước của hình ảnh được tải động có thể được lưu vào bộ đệm (đã tải trước đó), bạn có thể sử dụng phương thức Xavi cộng với chuỗi truy vấn để kích hoạt làm mới bộ đệm. Nhược điểm là nó sẽ gây ra một yêu cầu khác cho máy chủ, đối với một img đã được lưu trữ và nên đã có sẵn. Webkit ngu ngốc.
var pic_real_width = 0,
img_src_no_cache = $('img#someId').attr('src') + '?cache=' + Date.now();
$('<img/>').attr('src', img_src_no_cache).load(function(){
pic_real_width = this.width;
});
ps: nếu bạn đã có QueryString img.src
, bạn sẽ phải phân tích cú pháp và thêm tham số phụ để xóa bộ đệm.