Загрузка изображения не выполняется должным образом? - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь настроить функцию изменения размера для загрузки моих изображений так, чтобы, если изображение больше, чем окно браузера пользователя, оно само меняло размеры. Когда я ставлю функцию, как:

function resize(){
    console.log(this.width);
}

Это говорит 0 или NaN или не определено. Если я позже запусту функцию на изображениях, я получу правильные результаты ... Как я могу установить нагрузку, которая будет иметь доступ к атрибутам высоты и ширины?

редактировать: извините за путаницу: http://jsfiddle.net/9aDFe/

Изображения найдены в Google под поиском "landscape"

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Кросс-браузерное решение состоит в том, чтобы использовать комбинацию readystatechange и load

var image = new Image();
image.addEventListener ("readystatechange", yourImageOnloadChecker);
image.addEventListener ("load", yourImageOnloadChecker);
image.src = "path/to/your/image"; // set SRC after your events. it's an IE fix

Ваша функция проверки загрузки изображения должна проверять isNaN или равную 0 на высоте / ширине и, если это так, установитьобратный вызов к себе с помощью setTimeout.

0 голосов
/ 09 декабря 2011

РЕДАКТИРОВАТЬ Этот ответ был сделан недействительным из-за подробностей, добавленных в вопрос после того, как я ответил.Я оставлю это здесь для справки (поскольку это решает действительную и вероятную проблему), но учтите, что это не решение конкретной проблемы, описываемой ОП.

Есливы используете библиотеку, которая выдает событие "domReady" (или даже, в некоторых случаях, если ваш скрипт находится внизу страницы), тогда ваша функция загрузки не прикрепляется к изображению вовремя - она ​​ужезагружен.Особенно, если вы используете событие body.onload - оно не запускается до тех пор, пока изображение не будет полностью загружено.

Если вы хотите работать с изображением таким образом (с помощью кода, выполненного на body.onload), тогда вы можете просто получить прямой доступ к изображению - оно уже загружено.Последующие изображения, динамически размещаемые на странице, будут запускать событие onload, как вы ожидаете, поскольку они были добавлены после факта.

Проверьте https://developer.mozilla.org/en/DOM/window.onload для более подробного обсуждения события и предложите альтернативы, которые запускаютв разное время в процессе загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...