Книга: JavaScript. Подробное руководство, 6-е издание

ProgressEvent

ProgressEvent

событие продолжения загрузки, выгрузки или чтения файла (Event)

Все объекты - ApplicationCache, FineReader и XMLHttpRequest (версия 2) - возбуждают события, чтобы известить приложение о ходе выполнения операций передачи данных, таких как загрузка/выгрузка по сети или чтение файла. События этого рода известны как события хода выполнения операции, но только одно из них носит имя «progress». Другие события из этой категории, возбуждаемые объектами FineReader и XMLHttpRequest, - это события «loadstart», «load», «loadend», «error» и «abort».

Объект XMLHttpRequest также возбуждает событие «timeout». Объект ApplicationCache возбуждает несколько разных событий, имеющих отношение к ходу выполнения операции и описываемых здесь, но только одно из них носит имя «progress». Эти события возбуждаются в последовательности, которая начинается с события «loadstart» и всегда заканчивается событием «loadend». Непосредственно событию «loadend» предшествует событие «load», «error» или «abort», в зависимости от успеха выполнения операции. Между начальным «loadstart» и двумя заключительными событиями возбуждается ноль или более событий (с названием «progress»). (Объект ApplicationCache генерирует иную последовательность событий, но и он возбуждает событие «progress» в ходе обновления кэша, которое также относится к категории событий хода выполнения операции.)

Обработчтки событий хода выполнения операции получают объект ProgressEvent, который определяет количество переданных байтов данных. Объект ProgressEvent никак не связан с HTML-элементом <progress>, описанным в справочной статье Progress, но обект ProgressEvent, передаваемый (например) обработчику onprogress объекта XMLHttpRequest, можно было бы использовать для обновления состояния элемента <progress>, обеспечивающего визуальное представление хода выполнения операции загрузки.

Свойства

readonly boolean lengthComputable

Имеет значение true, если известно общее количество байтов, предназначенных для передачи, и false - в противном случае. Если это свойство имеет значение true, процент выполнения операции для объекта е типа ProgressEvent можно вычислить как:

var percentComplete = Math.floor(100*e.loaded/e.total);
readonly unsigned long loaded

Количество уже переданных байтов.

readonly unsigned long total

Общее количество байтов, предназначенных для передачи, если известно, и 0 -в противном случае. Эту информацию можно получить, например, из свойства size объекта Blob или из заголовка ContentLength, возвращаемого веб-сервером.

Оглавление книги


Генерация: 2.245. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз