Как именно работает свойство `complete` элемента изображения? - PullRequest
9 голосов
/ 07 ноября 2011

У меня возникла небольшая проблема с моим пониманием свойства complete.

Я предположил complete будет true, если изображение было загружено и декодировано правильно.

MDN говорит ...

Истина, если браузер извлек изображение, и оно имеет поддерживаемый тип изображения , который был декодирован без ошибок.

Итак, я предположил, что проверка свойства complete изображения до его события load вернет false (изображение не было извлечено ). При выделении этого в jsFiddle я продолжал получать true при проверке свойства внутри элемента script непосредственно перед закрывающим тегом </body>.

Я также экспериментировал с изменением атрибута src изображения, а затем немедленно проверял его свойство complete. Я вижу в браузере, что complete возвращается как true даже до того, как изображение загружено (я смотрю на его прогресс через панель Net в Firebug).

Правильное ли поведение я ожидаю? Есть ли способ заставить это работать так, как я ожидаю?

В настоящее время тестирование в Firefox 7.0.1. Это может быть ошибка Firefox, но используйте этот другой вопрос в качестве доказательства.

Ответы [ 2 ]

8 голосов
/ 07 ноября 2011

Из w3c-документов

Полный атрибут IDL должен возвращать true, если выполняется любое из следующих условий:

  • Атрибут src опущен.
  • Значением атрибута src является пустая строка.
  • Последняя задача, поставленная в очередь источником сетевых задач после извлечения ресурса, была поставлена ​​в очередь, но еще не былавыполнить, и элемент img не находится в поврежденном состоянии.
  • Элемент img полностью доступен.

Звучит так, как будто результат верный.Предполагая, что исходное изображение кэшируется, тогда изображение уже было получено.
Это не влияет на свойство complete при изменении src (поставить в очередь другую задачу)

, которую я сыгралнемного, и это выглядит так, как будто вы получите ожидаемый результат при удалении атрибута src перед установкой нового src.Демонстрация: http://jsfiddle.net/doktormolle/UNEF7/

Объяснение: При отсутствии атрибута src состояние изображения становится «нарушенным» (3-е условие больше не будет соответствовать), и ононе будет завершено до загрузки нового ресурса.

2 голосов
/ 07 ноября 2011

Я получил ответ, но он вам не понравится ...

Когда рассматриваемое изображение создается с помощью document.createElement, оно работает.См. http://jsfiddle.net/minitech/nmuQ8/

Я обнаружил, что это работает при создании теста, чтобы увидеть, если он не работает, так что пока у меня нет способа определить, является ли заменана самом деле необходимо, к сожалению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...