Проверка загрузки изображения
Нужно проверить грузится ли изображение или нет на данный момент:
<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, время: 01:32. |