2010-07-26 41 views
5

Tôi có phần tử img trong DOM của mình. Dựa trên hành động của người dùng, tôi tính một URL cho một hình ảnh và thay đổi thuộc tính src của phần tử hình ảnh (bằng cách sử dụng jQuery). Hình ảnh mới có kích thước khác với hình ảnh cũ. Điều này làm việc tốt trên Safari, nhưng IE không thay đổi kích thước màn hình hiển thị cho kích thước của hình ảnh mới. Tôi có một trình xử lý .load về sự thay đổi src (trong đó tôi thực hiện một số thay đổi đối với lớp của phần tử img) ... nếu tôi biết cách truy cập kích thước thực của hình ảnh, tôi có thể thiết lập các thuộc tính chiều cao và chiều rộng của các phần tử img. Có phải những giá trị đó có thể tiếp cận được ở đâu đó không? Nếu không, có cách nào khác để hiển thị hình ảnh ở kích thước mới của nó không?Thay đổi nguồn của thẻ hình ảnh (img) không thay đổi kích thước trên IE

Trả lời

0

tôi sẽ điều tra các giải pháp khác, nhưng bạn thực sự có thể truy cập thông tin trực tiếp

var myImage = new Image(); 
myImage.src = $("image selector goes here").attr('src'); 
myImage.onload = function() { 
    alert(myImage.width + "," + myImage.height); 
} 
+1

Cảm ơn đã gợi ý, nhưng than ôi khi tôi * thay đổi * src của hình ảnh và tải một hình ảnh của một kích thước mới, yếu tố img vẫn báo cáo chiều rộng và chiều cao giá trị ban đầu, không phải là hình ảnh vừa được nạp (trên IE, đó là, như tôi đã nói, hình ảnh được thay đổi kích thước bởi Safari). – Zhami

+0

Thử tải hình ảnh bằng url trực tiếp trái ngược với phương thức 'attr ('src')'. Vì vậy, một cái gì đó như 'myImage.src =" http://example.com/awesome.gif "' sau đó kiểm tra chiều rộng. Tôi không thể thấy nó có thể báo cáo cùng chiều rộng như thế nào, vì nó không nên biết về nó. Đây là loại đau vì nó gửi hai yêu cầu đến máy chủ của bạn cho hình ảnh, nhưng không phải là một vấn đề nếu có bộ nhớ đệm. –

+0

Nghi ngờ của tôi là công cụ hiển thị thực hiện bố cục với hình ảnh đầu tiên. Tải hình ảnh tiếp theo không buộc chuyển tiếp. Tôi đã viết lại toàn bộ cách tiếp cận của mình để tránh vấn đề này. – Zhami

1

tôi đã cùng một vấn đề, nhưng điều này đã chăm sóc nó.

$("#img").removeAttr("height").removeAttr("width").attr("src", newsrc); 
+0

Tôi không thấy làm thế nào điều này sẽ làm việc. Sửa tôi nếu tôi sai, nhưng từ những gì tôi có thể thấy chiều cao và chiều rộng không phải là thuộc tính DOM - kiểu là tuy nhiên. Việc xóa 'kiểu' hoạt động trong Chrome, hãy xem câu trả lời của tôi. – tronbabylove

3

Tôi đang làm việc trong Chrome chứ không phải IE, nhưng tôi gặp vấn đề tương tự và nghĩ rằng tôi sẽ chia sẻ cho bất kỳ ai khác gặp phải vấn đề này. Tôi giải quyết điều này bằng cách loại bỏ các "phong cách" thuộc tính từ hình ảnh trước khi thay đổi nguồn, tức là .:

myImg.removeAttribute ('phong cách') setAttribute ('src', newSrc).

+0

hoạt động giống như một sự quyến rũ. –

Các vấn đề liên quan