Escape Полный экран воспроизводит видео, если видео приостановлено

У меня есть HTML-видео, которое воспроизводится во весь экран, когда пользователь нажимает кнопку воспроизведения. Если пользователь нажимает escape в полноэкранном режиме, все работает правильно - видео перестает воспроизводиться и выходит из полноэкранного режима. Однако, если пользователь приостанавливает воспроизведение видео в полноэкранном режиме, а затем нажимает клавишу escape, видео начинает воспроизводиться снова, вызывая зацикливание звука из видео на странице, которая возвращается при выходе из полноэкранного режима. Мои элементы управления js следующие:

exitHandler: function(){
    vid = Video.vid;
    $(Video.featuredVideo).toggleClass('featured-video-show');
    if (document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement !== null){
        if (vid.paused){
            vid.play();
        }
        else {
            vid.pause();
        }
    }
  }

Как я могу остановить запуск видео / аудио, если пользователь делает паузу в полноэкранном режиме, а затем нажимает "escape", чтобы выйти из полноэкранного режима?

1 ответ

Создайте переменную для отслеживания того, выходите ли вы (во время выполнения обработчика) в полноэкранный режим или нет, и не запускайте play команда, если вы действительно выходите из него. Я не думаю, что для этого есть конкретные слушатели событий, поэтому вам, возможно, придется написать интервал для этого. Когда я столкнулся с этой проблемой, я использовал следующую функцию:

var canFullscreen = function(){
  return (
    !document.fullscreenElement &&
    !document.mozFullScreenElement &&
    !document.webkitFullscreenElement &&
    !document.msFullscreenElement );
}

Эта функция проверяет, можем ли мы в данный момент войти в полноэкранный режим. Если он вернется falseлибо полноэкранный режим (старый / странный браузер) отсутствует, либо вы работаете в полноэкранном режиме. Это функция, которую я запустил в интервале, чтобы точно проверить, когда пользователь выходит из полноэкранного режима (и в этот момент обработал выход программно). Если вместо этого вы отслеживаете нажатие кнопки Escape, вы можете включить эту функцию, чтобы определить, входите ли вы в полноэкранный режим или выходите из него.

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