Как отключить элементы управления по умолчанию на полноэкранном видео HTML5?
У меня есть видео заданной ширины и высоты, двойной щелчок по которому делает его полноэкранным с помощью videoElement.webkitRequestFullScreen().
По умолчанию видео не имеет никаких элементов управления. Но по какой-то причине при переходе на полный экран всплывают элементы управления по умолчанию. Вот что я делаю:
<video id="videoId" width="320" height="240" autoplay="autoplay" ondblclick="enterFullScreen('videoId')" src="Blah.mp4"></video>
И функция enterFullScreen(...) определяется как:
function enterFullScreen(elementId) {
var element = document.getElementById(elementId);
element.webkitRequestFullScreen();
element.removeAttribute("controls");
}
Как вы можете видеть, я уже пытался удалить элементы управления в функции. Но безрезультатно.
Может ли кто-нибудь сказать мне, как предотвратить это авто вставка элементов управления по умолчанию из происходящего?
5 ответов:
Это можно решить с помощью CSS, как описано здесь: HTML5 video не скрывает элементы управления в полноэкранном режиме в Chrome
video::-webkit-media-controls { display:none !important; }
Наконец, я нашел способ обойти это. Как и предложил Александр Фаркас, я завернул видео в другой div и установил этот родительский div на полный экран, после чего я установил высоту и ширину видео в
screen.heightиscreen.widthсоответственно. И я восстановил исходные свойства обоих дивов при выходе на полный экран.Псевдокод:
HTML:
<div id="videoContainer" style="position:absolute;background-color:black;"> <video id="videoId" style="height:240;width:320;" ondblclick="enterFullScreen('videoId')" src="movie.mp4"></video> </div>JavaScript:
function enterFullScreen(id) { var element = document.getElementById(id); element.parentNode.webkitRequestFullScreen(); element.style.height = screen.height; element.style.width = screen.width; } document.addEventListener("webkitfullscreenchange", function () { if(!document.webkitIsFullScreen) { // Restore CSS properties here which in this case is as follows : var element = document.getElementById('videoId'); element.style.height=240; element.style.width=320; } }, false);
Если видео идет полноэкранным, агент пользователя должен показать элементы управления, также если атрибут controls отсутствует.
Новые агенты пользователей также поддерживают полноэкранный API для любого элемента. Поэтому вы можете попробовать следующее:
element.parentNode.webkitRequestFullScreen();
Вы можете найти идентификатор div, содержащий элементы управления, и отключить его с помощью javascript. например, если id div, содержащего элементы управления, - " controldiv" тогда в своей функции вы можете написать
var ctrls = document.getElementById("controldiv"); ctrls.disabled="true";
Обычно должно работать следующее:
Но я не уверен, что переход в полноэкранный режим отменит его.var videoPlayer = document.getElementById('videoId'); videoPlayer.controls = false;
Comments