Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка загрузки изображения (https://javascript.ru/forum/misc/25519-proverka-zagruzki-izobrazheniya.html)

9xakep 07.02.2012 22:47

Проверка загрузки изображения
 
Нужно проверить грузится ли изображение или нет на данный момент:
<body>
<img src='http://javascript.ru/forum/images/ca_serenity/misc/logo.gif'>
<script>
var img = document.getElementsByTagName('img') //берем нашу картинку
HTMLImageElement.prototype.check_load = function () { 
this.onload = function () { //при загрузки картинки возвращать true
return true;
}
return false; //когда картикнка не грузится возвращать false
}
setInterval(function () { 
console.log(img[0].check_load()) //пишет false,false,false,flase
},1000)
</script>
</body>

Почему все время возвращает false? Желательно если исправите ошибку в скрипте, а не приводить другой вариант :-?
_______
Хотя я кажется догадался, вначале браузер загружает картинку, потом скрипт, из-за этого он и выдает что она загружена, но если переместить картинку ниже, то вначале загрузится скрипт, будет ожидать загрузки картинки(т.к. на тот момент ее для него нет) и потом опять будет выдавать false. Так как все-таки можно проверить загружается картинка или нет?

Kolyaj 07.02.2012 22:49

Код, мягко говоря, очень странный с какой-то извращённой логикой.

У картинок есть свойство complete.

9xakep 07.02.2012 22:54

Спасибо, почитаю. Почему с "извращённой логикой"? Вы бы как сделали? (не пользуясь встроенными методами\свойствами итд)

Kolyaj 07.02.2012 22:58

Я бы использовал свойство complete.

Про извращённую логику медитировать на эту функцию до полного просветления
HTMLImageElement.prototype.check_load = function () {
    this.onload = function () { //при загрузки картинки возвращать true
        return true;
    }
    return false; //когда картикнка не грузится возвращать false
}

9xakep 07.02.2012 23:10

Ну когда картинка загружается, то событие onload будет исполняться и соответсвенно возвращать true. Когда картинка загружена, то событие onload исполняться не будет и следовательно будет возвращать false

9xakep 08.02.2012 08:48

Спасибо , ливаандриамарум, сделаю по-другому

nikita.mmf 08.02.2012 13:26

HTMLImageElement.prototype.check_load = function () {
    this.onload = this.onload || function () { 
        this.check_load = function(){ return true; };
    }
    return false; //когда картикнка не грузится возвращать false
}

9xakep 08.02.2012 18:13

nikita.mmf,
Спасибо


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