В моем веб-приложении есть тег img, который использует обработчик загрузки для изменения размера изображения:
<img onLoad="SizeImage(this);" src="foo" >
Это прекрасно работает в Firefox 3, но не работает в IE7, потому что объект изображения, передаваемый в функцию SizeImage()
, имеет ширину и высоту 0 по какой-то причине - может быть, IE вызывает функцию до того, как завершит загрузку? Исследуя это, я обнаружил, что у других людей была такая же проблема с IE. Я также обнаружил, что это недопустимый HTML 4. Это наш тип документа, поэтому я не знаю, действителен он или нет:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Существует ли разумное решение для изменения размера изображения по мере его загрузки, предпочтительно, которое соответствует стандартам? Изображение используется для того, чтобы пользователь мог загрузить свою фотографию, которая может быть практически любого размера, и мы хотим, чтобы она отображалась с максимальным размером 150x150. Если ваше решение заключается в изменении размера изображения на стороне сервера при загрузке, я знаю, что это правильное решение, но мне запрещено его применять :( Это должно быть сделано на стороне клиента, и это должно быть сделано на дисплее.
Спасибо.
Редактировать : Из-за структуры нашего приложения нецелесообразно (граничит с невозможным) запускать этот сценарий при загрузке документа. Я могу только разумно редактировать тег изображения и код рядом с ним (например, я могу добавить <script>
прямо под ним). Кроме того, у нас уже есть библиотеки Prototype и EXT JS ... руководство предпочло бы не добавлять другую (в некоторых ответах предлагается jQuery). Если это можно решить с помощью этих структур, это было бы здорово.
Редактировать 2 : К сожалению, мы должны поддерживать Firefox 3, IE 6 и IE 7. Желательно также поддерживать все браузеры на основе Webkit, но наш сайт в настоящее время их не поддерживает, мы можем терпеть решения, которые работают только в Большой 3.