Я пытаюсь изменить размер изображения на основе массива max-width / max-height.Вот что я придумала до сих пор:
<html>
<head>
<title>Image resize test</title>
<script>
function createImage(){
//The max-width/max-height
var maxDim = [500,500];
//Create the image
var img = document.createElement("img");
img.setAttribute("src","http://nyrixcorp.com/images/eggplant_service.png");
document.body.appendChild(img);
//Function for resizing an image
function resize(){
//resize the image
var portrait = this.width < this.height;
this[portrait ? "height" : "width"] = maxDim[portrait ? 1 : 0];
//What is the height? PROBLEM HERE!!!
console.log(this.height);
}
//Is the image loaded already?
var temp = new Image();
temp.src = img.src;
var loaded = typeof temp.complete != "undefined" ? temp.complete : !isNaN(temp.width+temp.height) && temp.width+temp.height != 0;
//Fire the resize function
if (loaded) resize.call(img);
else img.addEventListener("load",resize,false);
}
</script>
</head>
<body onload="createImage()">
</body>
</html>
Вы сможете запустить этот файл как есть.Он может получить ширину / высоту после загрузки изображения.Но как только вы измените ширину, она все равно записывает старую высоту.Похоже, что единственный браузер, который работает правильно, это Firefox (более новые версии).Все остальные браузеры не обновляют атрибут высоты до завершения загрузки окна.
Кто-нибудь знает исправление для этого?Изображение уже загружено, но оно не отображает правильные размеры.