Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.06.2012, 15:02
Интересующийся
Отправить личное сообщение для Andrey1205 Посмотреть профиль Найти все сообщения от Andrey1205
 
Регистрация: 02.06.2012
Сообщений: 21

обьект 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", в ряде случаев правильные размеры. Не могу увидеть закономерности. Плз, подскажите где собака зарылась?
Ответить с цитированием
  #2 (permalink)  
Старый 10.06.2012, 15:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

либо по онлоад ставим флаг и тестируем setTimeout из своей функции - флаг и тогда считываем размеры,
Ответить с цитированием
  #3 (permalink)  
Старый 10.06.2012, 15:11
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

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)
__________________
Я только учусь.Ногами просьба не бить
Ответить с цитированием
  #4 (permalink)  
Старый 10.06.2012, 15:24
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от bot87 Посмотреть сообщение
А ты изображения добавил в код или нет? document.body.appendChild(image)
Его не обязательно добавлять-мы же в кэш браузера грузим
var image=new Image();
image.onload=function(){alert(image.width+'='+image.height)
};
image.src='08.jpg';
Ответить с цитированием
  #5 (permalink)  
Старый 10.06.2012, 15:32
Интересующийся
Отправить личное сообщение для Andrey1205 Посмотреть профиль Найти все сообщения от Andrey1205
 
Регистрация: 02.06.2012
Сообщений: 21

Сообщение от bot87 Посмотреть сообщение
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)
да конечно. Без него же никак.
Ответить с цитированием
  #6 (permalink)  
Старый 10.06.2012, 15:34
Интересующийся
Отправить личное сообщение для Andrey1205 Посмотреть профиль Найти все сообщения от Andrey1205
 
Регистрация: 02.06.2012
Сообщений: 21

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

вот сдесь еще нашел пост про это: Когда срабатывает image.onload?
Ответить с цитированием
  #7 (permalink)  
Старый 10.06.2012, 15:39
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

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

вот сдесь еще нашел пост про это: Когда срабатывает image.onload?
Я так всегда делаю по onload
А добавлять его не обязательно-например в canvas можно выводить
Ответить с цитированием
  #8 (permalink)  
Старый 10.06.2012, 15:44
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 10.06.2012 в 15:47.
Ответить с цитированием
  #9 (permalink)  
Старый 10.06.2012, 16:06
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от dmitriymar Посмотреть сообщение
тест другой -замена изображения на другое с темже именем -должно выводиться то что ранее-не выведется
Это хорошо что заменится-c кэшем хуже бы было
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая смена картинок через заданное время herotic Элементы интерфейса 45 15.05.2020 16:44
обьект Image() устарел? Arkinsstoun Общие вопросы Javascript 3 05.02.2012 19:08
Оцените, пожалуйста код вёрстки OlegALL Ваши сайты и скрипты 18 26.07.2011 09:35
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
свойства width и height в IE.... alex.v Internet Explorer 18 29.09.2009 12:03