Событие ошибки тега видео в автономном веб-приложении ipad не работает

Сначала извините, если я задаю уже отвеченный вопрос, но я не могу его найти или решить в данный момент.

Я занимаюсь разработкой веб-приложения, которое запускается на iPad в автономном режиме. Есть <video> тег и я играю с ним потоковое видео, я думаю, что это может быть проблемой, так как я не проверял событие ошибки в статическом файле. Моя проблема в том, что я не могу привязать событие onerror или error к тегу, чтобы в случае сбоя потока по какой-либо причине я мог его перезапустить.

Мой тег видео выглядит так:

<video id="video_tag" preload webkit-playsinline autoplay="autoplay" x-webkit-airplay="allow">
<source type="video/mp4" src="http_stream_url"></source>
</video>

Я пытался добавить onerror="alert('error')" на видео теге напрямую не получилось.

Я пытался добавить слушатель события в тег видео напрямую document.getElementById("video_tag").addEventListener('error', function(event) { alert('error'); }, true); это не сработало.

Я пытался добавить прослушиватель событий в тег источника, поскольку кто-то указал, что событие ошибки вызывается тегом источника, а не тегом видео, но это не сработало.

Я тоже пытался поставить onerror="alert('error')" по тегу источника, не сработало.

Обратите внимание, что это внутри iPad > Safari > автономный режим> веб-приложение javascript> видео тег> воспроизведение потока HLS (http live stream)

РЕДАКТИРОВАТЬ: он обнаруживает сбой загрузки видео потока, но мне нужно определить, когда поток останавливается во время воспроизведения и перезапустить поток в этом случае.

Спасибо

1 ответ

Я думаю, что вы должны прислушиваться к onstalled событие в video элемент. Элемент видео представляет собой особый вид медиа-элемента, и список событий можно найти в w3schools.

Имейте в виду, что поддержка браузера все еще довольно ранняя, и не все события обязательно реализуются. Я бы порекомендовал создать обработчик для всех перечисленных событий и посмотреть, действительно ли происходит событие, когда поток останавливается. Я подозреваю, что onreadystatechange или же onsuspend события могут также помочь вам.

Другие вопросы по тегам