Существует тег видео HTML. Я хочу знать, когда он начнет играть:Как узнать, что вызывает запуск html-видео?
- Это вызвано
autoplay
? - Это вызвано вызовом
play()
в JavaScript? - Является ли это причиной нажатия пользователем кнопки воспроизведения?
Я хочу иметь дело с игрой событием вызвал только действия пользователя (третий случай в этих три).
Мое текущее решение:
function videoEventHandler(ev) {
var videoElem = ev.target;
if (!videoElem.controls) {
// no controls in video, means events can't be caused by user actions
return true;
}
switch (ev.type) {
case 'play':
if (videoElem.autoplay && !videoElem.hasPaused) {
// first play event in autoplay video, muse be caused by autoplay
return true;
}
// deal with play event caused by user actions
return true;
case 'pause':
ev.target.hasPaused = true;
// deal with pause event caused by user actions
return true;
}
}
Проблема: Мое решение не может справиться с этими сценариями:
- Он не знает, если событиеигра вызвана вызовом JavaScript для
play()
- Он не знает, произошло ли событие приостановки , вызванное видео достигает конца
Пожалуйста, обратите внимание: я не могу добавить флаг на play()
, потому что это называется на веб-странице. Веб-страница не написана мной, и я не могу ее изменить. (Я пишу расширение Chrome)
Может ли кто-нибудь помочь мне в этом?
Это очень конкретный вопрос, это может смутить кого-то. Если мой вопрос смущает вас, оставьте комментарий, и я попытаюсь объяснить его более четко. Оценил.
Что делать, если сайт предоставляет собственную кнопку воспроизведения отдельно от видеоэлемента? Это действие пользователя в основном, даже несмотря на то, что видео запускается с помощью кода play(). – wOxxOm
@wOxxOm Вы правы. Кажется, что не существует идеального решения для каждого сценария. Я просто хочу охватить большинство случаев. –