Г ОНКА ЗА ВОСПРОИЗВЕДЕНИЕМ ВИДЕО До этого я представлял вам элементы видео и аудио как бочки, наполненные свежим благо-
ухающим медом, однако и здесь без ложки дегтя не обошлось. В реализации элемента
video
существует проблема, создающая так называемое «условие состязания».
СОСТЯЗАНИЕ, НУ И ЧТО? В данной ситуации условие состязания означает, что ожидаемая последовательность срабаты-
вания событий нарушается и события выполняются в непредсказуемом порядке В частности,
события срабатывают до того, как присоединяется код для их обработки
Проблема (хоть и маловероятная) заключается в том, что браузер может загрузить элемент
медиа до того, как у вас будет время привязать приемники событий.
Например, вы прослушиваете событие
loadedmetadata
, для того, чтобы понять, когда
видео будет готово к использованию в вашем модном, сделанном собственными руками
видеоплеере, однако возможно, что «родной» элемент
video
HTML запустит события до того, как будет загружен ваш код JavaScript.
ОБХОДНЫЕ ПУТИ Для данного условия состязания существует несколько обходных путей — конечно, хорошо
бы было их избегать, но, боюсь, они относятся к тем вещам, которые необходимо добавлять
в код для собственной защиты.