Как узнать, когда видеоплеер HTML5 входит в полноэкранный режим на iOS/iPads?
Тег HTML5 предлагает пользователю кнопку для включения и выключения полноэкранного режима в Safari для мобильных устройств (iOS).
Я хотел бы захватить и обработать это действие пользователя, но, похоже, оно не вызывает событие при нажатии кнопки, и игрок переходит в полноэкранный режим.
Вот ссылка на API Safari для класса HTMLVideoElement:
http://developer.apple.com/library/safari/#documentation/AudioVideo/Reference/HTMLVideoElementClassReference/HTMLVideoElement/HTMLVideoElement.html#//apple_ref/doc/uid/TP40009356
Мы можем легко узнать, когда видео приостановлено в Javascript, например:
function onload()
{
var player = document.getElementsByTagName("video")[0];
player.addEventListener('play',videoPlayHandler,false);
player.addEventListener('pause',videoPauseHandler,false);
}
Однако у них, похоже, нет событий, когда видео входит в полноэкранный режим.
Мы можем принудительно включить видео в полноэкранный режим в ответ на действие пользователя, вызвав webkitEnterFullscreen(), но это мне не помогает. Мне нужно знать, когда пользователь нажимает на полноэкранную кнопку.
Скрытие элементов управления и замена их собственными настраиваемыми элементами управления звучит как действительно длинное завитое решение.
Другим вариантом, о котором я могу думать, является установка события синхронизации, постоянно проверяющего свойство webkitDisplayingFullscreen, но это выглядит как плохое в плане управления памятью.
Может ли кто-нибудь предложить лучшее решение?
Ответы
Ответ 1
После долгих раздумий, друзья наконец указали мне в правильном направлении.
События, которые я искал: webkitbeginfullscreen и webkitendfullscreen
var player = document.getElementsByTagName("video")[0];
player.addEventListener('webkitbeginfullscreen', onVideoBeginsFullScreen, false);
player.addEventListener('webkitendfullscreen', onVideoEndsFullScreen, false);
С этим я могу безопасно захватить, когда пользователь нажимает на полноэкранную кнопку Safari для iPads. Интересно, что те же самые события, похоже, не работают для Safari на iMac (протестированы в версии 5.1.2).
Спасибо Apple за их непоследовательность и часы впустую.