Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   обьект Image неправильно возвращает height, width (https://javascript.ru/forum/dom-window/28993-obekt-image-nepravilno-vozvrashhaet-height-width.html)

Andrey1205 10.06.2012 15:02

обьект Image неправильно возвращает height, width
 
var image=new Image();
         image.src=url;
         function imageLoadTrue() {
           if(!image.complete) {
             setTimeout(image.id='image', 10);
             imageLoadTrue();
            }
         }

         alert(image.width+'='+image.height)


иногда возвращает "0=0", в ряде случаев правильные размеры. Не могу увидеть закономерности. Плз, подскажите где собака зарылась?

Deff 10.06.2012 15:06

Andrey1205,
считывать размеры надо после полной загрузки картинки
Т. е либо из события <img onload="FuncTest()"

либо по онлоад ставим флаг и тестируем setTimeout из своей функции - флаг и тогда считываем размеры,

bot87 10.06.2012 15:11

url="1.jpg"
var image=new Image();
         image.src=url;
        function imageLoadTrue() {
           if(!image.complete) {
             setTimeout(image.id='image', 10);
             imageLoadTrue();
            }
         }

         
		 
		 document.body.appendChild(image)
		 alert(image.width+'='+image.height)


А ты изображения добавил в код или нет? document.body.appendChild(image)

vadim5june 10.06.2012 15:24

Цитата:

Сообщение от bot87 (Сообщение 180558)
А ты изображения добавил в код или нет? document.body.appendChild(image)

Его не обязательно добавлять-мы же в кэш браузера грузим
var image=new Image();
image.onload=function(){alert(image.width+'='+image.height)
};
image.src='08.jpg';

Andrey1205 10.06.2012 15:32

Цитата:

Сообщение от bot87 (Сообщение 180558)
url="1.jpg"
var image=new Image();
         image.src=url;
        function imageLoadTrue() {
           if(!image.complete) {
             setTimeout(image.id='image', 10);
             imageLoadTrue();
            }
         }

         
		 
		 document.body.appendChild(image)
		 alert(image.width+'='+image.height)


А ты изображения добавил в код или нет? document.body.appendChild(image)

да конечно. Без него же никак.

Andrey1205 10.06.2012 15:34

т.е я так понимаю можно тупо забить на image.complete? и брать высоту\ширину после загрузки по onload?

вот сдесь еще нашел пост про это: http://javascript.ru/forum/misc/8772...ge-onload.html

vadim5june 10.06.2012 15:39

Цитата:

Сообщение от Andrey1205 (Сообщение 180563)
т.е я так понимаю можно тупо забить на image.complete? и брать высоту\ширину после загрузки по onload?

вот сдесь еще нашел пост про это: http://javascript.ru/forum/misc/8772...ge-onload.html

Я так всегда делаю по onload
А добавлять его не обязательно-например в canvas можно выводить

dmitriymar 10.06.2012 15:44

Цитата:

Сообщение от vadim5june
Его не обязательно добавлять-мы же в кэш браузера грузим

а этот вывод откуда?
грузится в прелоадер -а это не кеш браузера.
тест простой -при загрузке в прелоадер что в первый что в последующие разы будет одно и тоже время. чего бы не было если бы использовался кеш.
тест другой -замена изображения на другое с темже именем -должно выводиться то что ранее-не выведется
Р.S если бы у бабушки были яйца она была бы дедушкой,и соответственно загрузка в прелоадер называлась бы загрузкой в кеш а не в прелоадер

vadim5june 10.06.2012 16:06

Цитата:

Сообщение от dmitriymar (Сообщение 180567)
тест другой -замена изображения на другое с темже именем -должно выводиться то что ранее-не выведется

Это хорошо что заменится-c кэшем хуже бы было


Часовой пояс GMT +3, время: 17:08.