Tôi có một thẻ img trong webapp của tôi có sử dụng các handler onload thay đổi kích thước hình ảnh:img onload không hoạt động tốt trong IE7
<img onLoad="SizeImage(this);" src="foo" >
này hoạt động tốt trong Firefox 3, nhưng thất bại trong IE7 vì đối tượng hình ảnh được chuyển đến hàm SizeImage()
có chiều rộng và chiều cao bằng 0 vì một số lý do - có thể IE gọi hàm trước khi nó tải xong ?. Trong nghiên cứu này, tôi đã phát hiện ra rằng những người khác đã có cùng một vấn đề với IE. Tôi cũng đã phát hiện ra rằng đây không phải là HTML hợp lệ 4. Đây là loại tài liệu của chúng tôi, vì vậy tôi không biết nếu nó là hợp lệ hay không:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Có một giải pháp hợp lý cho thay đổi kích thước một hình ảnh khi nó được tải tốt nhất là phù hợp với tiêu chuẩn? Hình ảnh đang được sử dụng để người dùng tải lên ảnh của chính họ, có thể có kích thước gần như bất kỳ và chúng tôi muốn hiển thị hình ảnh ở mức tối đa 150x150. Nếu giải pháp của bạn là thay đổi kích thước hình ảnh phía máy chủ khi tải lên, tôi biết đó là giải pháp đúng, nhưng tôi bị cấm thực hiện nó: (Phải được thực hiện phía máy khách và phải được thực hiện trên màn hình.
Chỉnh sửa: Do cấu trúc của ứng dụng của chúng tôi, không thực tế (có thể xảy ra tiếp cận) để chạy tập lệnh này trong tài liệu đang tải. Tôi chỉ có thể chỉnh sửa hợp lý thẻ hình ảnh và mã gần đó (cho Ví dụ, tôi có thể thêm một <script>
ngay bên dưới nó) Ngoài ra, chúng tôi đã có Prototype và EXT JS thư viện ... quản lý sẽ không muốn thêm khác (một số câu trả lời đã đề nghị jQuery) .Nếu điều này có thể được giải quyết bằng cách sử dụng những khuôn khổ, điều đó thật tuyệt vời.
Chỉnh sửa 2: Thật không may, chúng tôi phải hỗ trợ Firefox 3, IE 6 và IE 7. Mong muốn hỗ trợ tất cả các trình duyệt dựa trên Webkit, nhưng trang web của chúng tôi hiện không hỗ trợ chúng, chúng tôi có thể dung thứ các giải pháp chỉ hoạt động trong Big 3.
Câu hỏi: được SizeImage() chỉ đơn giản là thay đổi kích thước hình ảnh để 150x150? Tôi có các giải pháp khác nhau, tốt hơn cả những giải pháp dưới đây, nhưng nó phụ thuộc vào những gì bạn cần SizeImage() để làm. –
@Eric: không, nó nên giữ tỷ lệ khung hình của hình ảnh. ngoài ra, nếu hình ảnh ban đầu nhỏ hơn 150x150, không có thay đổi kích thước nào được thực hiện (tôi không bao giờ muốn kéo dài và hình ảnh). – rmeador