Недавно я наблюдал странную ситуацию, связанную с браузерами IE / Edge и событиями, связанными с тегами медиаресурсов, такими как <video>
, <audio>
et c.
На html5 spe c и нескольких авторитетных сайтах, таких как MDN, я узнал, что функция load()
, вызываемая на объекте ресурса, таком как видео, должна вызывать запуск ряда событий. как loadstart
, loadeddata
et c. На первый взгляд кажется, что это старая функция, поддерживаемая везде, вплоть до IE9. Но на самом деле этого не происходит в браузерах Microsoft.
Что я пытаюсь сделать? На странице есть скрытый тег <video>
. Обычно пользователь нажимает на элемент управления на странице, и я показываю загрузчик, ожидающий поступления данных (первый кадр). Как только страница получит данные - начните воспроизведение видео. Я ловлю событие loadeddata
, чтобы скрыть загрузчик и показать и воспроизвести актуальный <video>
. Однако, что бы я ни делал в IE / Edge - вызывая load()
или динамически устанавливая src
для <video>
- это не имеет никакого эффекта. Свойство readyState
<video>
остается равным 0, что означает, что он даже не начал загружать данные. Я почти уверен, что видео отсутствует в кеше, но для полноты картины я попытался разрушить кеш, добавив случайную строку в URL видео. Нет эффекта. Однако , если я просто просто позвоню play()
на <video>
, он фактически начинает выполнять работу и запускает все события, в конце концов вызывая воспроизведение видео.
Почему не получаются соответствующие события срабатывает при вызове тега load()
на <video>
в IE / Edge?