Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проверка картинки на существование и на ее полную загрузку (https://javascript.ru/forum/events/17900-proverka-kartinki-na-sushhestvovanie-i-na-ee-polnuyu-zagruzku.html)

syegorius 08.06.2011 09:23

Проверка картинки на существование и на ее полную загрузку
 
Доброе время суток. В скрипте написал такое чудо:

var newImg = new Image();
newImg.src = src;
var $iw = newImg.width;
var $ih = newImg.height;

Но очень часто $iw и $ih не правильные... Я подозреваю, что это потому что картинка не успевает загрузится...
Как проверить загрузилась ли она, а если картинки не существует, то как заменить src на, например, standart.jpg?
В интернете нашел метод onload и onerror, но не совсем понял как ими пользоваться и куда мне тут их надо вставить...

Заранее спасибо за ответы...

walik 08.06.2011 09:49

var newImg = new Image();
newImg.onload = function() {
     $iw = newImg.width;
     $ig = newImg.height;
}
newImg.src = src;

syegorius 08.06.2011 10:09

Такой вопрос напрашивается - если newImg.src = src; стоит после newImg.onload = function(); то как оно знает какую картинку проверять на onload?

ksa 08.06.2011 10:14

Цитата:

Сообщение от syegorius
Такой вопрос напрашивается - если newImg.src = src; стоит после newImg.onload = function();

- Доктор, если я делаю вот так (сворачивается в немыслимую позу)... То у меня сильно болит вот сдесь.
- Не делайте так.

syegorius 08.06.2011 10:28

))) хорошо... ну а если у меня там стоит цикл типа
for(i=0; i<10; i++){
var newImg = new Image();
newImg.onload = function() {
$iw = newImg.width;
$ig = newImg.height;
}
newImg.src = 'img'+i+'.jpg';
}

оно нормально будет работать?

ksa 08.06.2011 10:38

Цитата:

Сообщение от syegorius
а если у меня там стоит цикл типа
for(i=0; i<10; i++){
var newImg = new Image();
	newImg.onload = function() {
	     $iw = newImg.width;
	     $ig = newImg.height;
	}
	newImg.src = 'img'+i+'.jpg';
}

Что мешает переставить местами...

for(i=0; i<10; i++){
	var newImg = new Image();
	newImg.src = 'img'+i+'.jpg';
	newImg.onload = function() {
	     $iw = newImg.width;
	     $ig = newImg.height;
	}
}


В любом случае нужно просто попробовать...

Kolyaj 08.06.2011 10:39

Вы присваиваете высоты 10 картинок одной переменной. Что тут должно нормально работать?

ksa 08.06.2011 10:40

Kolyaj, может это он только для "примера" такое написал... :)

Kolyaj 08.06.2011 10:40

Цитата:

Сообщение от ksa
Что мешает переставить местами...

Не надо переставлять местами, проблемы начнутся.

ksa 08.06.2011 10:41

Ясно...


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