148 • Глава 4
В нем нет ничего сверхъестественного. Инициализация элементов управления активирует
переключатель «воспроизведение/пауза», а на полосе прокрутки сбрасывает указатель
текущего кадра.
Однако иногда это событие запускается не сразу (или, по крайней мере, не в
тот момент,
когда вы этого ожидаете). Время от времени загрузка приостанавливается из-за того, что
браузер пытается сохранить слишком большую часть загружаемой информации. Это может
быть крайне неприятно, если вы уже ожидаете событие
canplay
, которое не запустится,
пока вы не поработаете над элементом медиа. Так что мы лучше займемся наблюдением
за событием
loadeddata
.
ПРИМЕЧАНИЕ
События, которые имеют отношение к загрузке, запускаются в
следующем порядке:
loadstart,
durationchange, loadedmetadata, loadeddata, progress, canplay, canplaythrough
Оно говорит нам о том, что загруженные данные уже есть, но пока загрузка не заверше-
на. Это значит, что доступны метаданные (высота, ширина, длительность и т. д.) и часть
медиаконтента — но не весь. Такие браузеры, как Firefox, предоставляют пользователю
возможность запустить видео, когда сработало событие
loadeddata
, и переходят из состо-
яния ожидания к загрузке оставшейся части медиаконтента, что позволяет воспроизвести
видео целиком.
Возможно, вы обнаружите, что в большинстве ситуаций, когда вы создаете собствен-
ный интерфейс медиапроигрывателя, вам не приходится ждать загрузки фактических
видеоданных — достаточно только метаданных. Это
означает, что срабатывает событие
loadedmetadata
: а для того чтобы оно сработало, нужно, чтобы загрузился первый кадр,
информация о продолжительности и размере кадра и другие метаданные. Фактически этого
достаточно для создания собственного пользовательского интерфейса.
Таким образом,
loadeddata
— это
как раз та точка цикла событий, в которой должен быть
активирован пользовательский интерфейс:
video.addEventListener('loadedmetadata', initialiseControls,
¬ false);
Достарыңызбен бөлісу: