Вы не ждете, пока изображение действительно загрузится.
Вы должны включить проверку width
в обработчик событий load
изображения:
trashImg.onload = function() { IMG_WIDTH = trashImg.width; }
trashImg.src = this.href; // Remember to do this AFTER defining the load handler
(может быть возможно сослаться на изображение как this
вместо trashImg
внутри функции загрузки, но сейчас я не уверен, будет ли это работать полностью, как ожидалось)
Обратите внимание, что выне знаю, когда сработает событие load
, поэтому вам нужно поместить в эту функцию весь код, который зависит от IMG_WIDTH
(или вызвать его оттуда).
Хотя обычно это работает,Событие load на изображениях имеет некоторые известные ненадежности, о которых полезно знать.Из руководства jQuery :
Предостережения о событии загрузки при использовании с изображениями
Распространенной проблемой, которую разработчики пытаются решить с помощью ярлыка .load (), является:выполнить функцию, когда изображение (или коллекция изображений) полностью загружены.Есть несколько известных предостережений с этим, которые следует отметить.Это:
- Он не работает согласованно и надежно кросс-браузерно
- Он не работает корректно в WebKit, если для src изображения установлен тот же src, что и раньше
- Не правильно всплывает дерево DOM
- Может перестать срабатывать для изображений, которые уже находятся в кеше браузера