Проверка загрузки изображения
Нужно проверить грузится ли изображение или нет на данный момент:
<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. Так как все-таки можно проверить загружается картинка или нет? |
Код, мягко говоря, очень странный с какой-то извращённой логикой.
У картинок есть свойство complete. |
Спасибо, почитаю. Почему с "извращённой логикой"? Вы бы как сделали? (не пользуясь встроенными методами\свойствами итд)
|
Я бы использовал свойство complete.
Про извращённую логику медитировать на эту функцию до полного просветления
HTMLImageElement.prototype.check_load = function () {
this.onload = function () { //при загрузки картинки возвращать true
return true;
}
return false; //когда картикнка не грузится возвращать false
}
|
Ну когда картинка загружается, то событие onload будет исполняться и соответсвенно возвращать true. Когда картинка загружена, то событие onload исполняться не будет и следовательно будет возвращать false
|
Спасибо , ливаандриамарум, сделаю по-другому
|
HTMLImageElement.prototype.check_load = function () {
this.onload = this.onload || function () {
this.check_load = function(){ return true; };
}
return false; //когда картикнка не грузится возвращать false
}
|
nikita.mmf,
Спасибо |
| Часовой пояс GMT +3, время: 04:25. |