Можностей, предоставляемых веб-разработчикам


К ОГДА МЕДИАФАЙЛ ГОТОВ К ВОСПРОИЗВЕДЕНИЮ



Pdf көрінісі
бет169/232
Дата06.01.2022
өлшемі5,47 Mb.
#12231
1   ...   165   166   167   168   169   170   171   172   ...   232
К
ОГДА МЕДИАФАЙЛ ГОТОВ К ВОСПРОИЗВЕДЕНИЮ
Браузер не может начать воспроизведение медиафайла, как только обнаружит его на стра-
нице. Видео (или аудио) должно быть загружено и декодировано и только после этого ста-
нет возможным его воспроизведение. Как только вся подготовительная работа проведена, 
элемент медиа запускает событие 
canplay
Обычно именно в это время удаляется индикатор 
загрузки, и вы инициализируете элементы управления. Наш код для инициализации эле-
ментов управления в обычных условиях выглядел бы примерно так:
video.addEventListener('canplay', initialiseControls,
¬ false);


148  •  Глава 4
В нем нет ничего сверхъестественного. Инициализация элементов управления активирует 
переключатель «воспроизведение/пауза», а на полосе прокрутки сбрасывает указатель 
текущего кадра.
Однако иногда это событие запускается не сразу (или, по крайней мере, не в тот момент, 
когда вы этого ожидаете). Время от времени загрузка приостанавливается из-за того, что 
браузер пытается сохранить слишком большую часть загружаемой информации. Это может 
быть крайне неприятно, если вы уже ожидаете событие 
canplay
, которое не запустится, 
пока вы не поработаете над элементом медиа. Так что мы лучше займемся наблюдением 
за событием 
loadeddata

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


Достарыңызбен бөлісу:
1   ...   165   166   167   168   169   170   171   172   ...   232




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет