请求全屏HTML5videoonPlay
当用户点击元素上的播放按钮时,我正在使用以下代码触发全屏:
var video = $("#video"); video.on('play', function(e){ if (video.requestFullscreen) { video.requestFullscreen(); } else if (video.mozRequestFullScreen) { video.mozRequestFullScreen(); } else if (video.webkitRequestFullscreen) { video.webkitRequestFullscreen(); } });
但是当我点击播放按钮时没有任何反应。
任何想法都是为什么?
编辑:这是我的HTML代码:
这里有几件事情:
首先,在您的代码中, video
是一个jQuery对象,而不是实际的video元素。 对于jQuery对象,您可以像这样引用它:
var actualVideo = video[0]; // (assuming '#video' actually exists)
其次,为了获得安全性和良好的用户体验,浏览器只允许您在用户触发的事件中触发全屏,例如“点击”。 一旦您访问它,就不能让每个网页都全屏显示,并且您可以使video自动开始播放,这违反了该规则。
因此,另一种解决方案是在点击事件中请求全屏,如下所示:
var video = $("#video"); video.on('click', function(e){ var vid = video[0]; vid.play(); if (vid.requestFullscreen) { vid.requestFullscreen(); } else if (vid.mozRequestFullScreen) { vid.mozRequestFullScreen(); } else if (vid.webkitRequestFullscreen) { vid.webkitRequestFullscreen(); } });
理想情况下,你可能想要建立一个更完整的玩家ui,但这应该给你一般的想法。
一种不那么冗长的方式来切换全屏组合这个和其他问题的答案。
p
表示video
元素的DOM对象, window.isFs
只是用于存储当前全屏状态的随机变量。
如果你的player
是一个jQuery对象,那么使用var p = player.get(0)
获取底层DOM元素。
这应该处理所有浏览器风格:基于webkit,firefox,opera和基于MS的浏览器。
var p = document.querySelector('#videoplayer'); if (!window.isFs) { window.isFs = true; var fn_enter = p.requestFullscreen || p.webkitRequestFullscreen || p.mozRequestFullScreen || p.oRequestFullscreen || p.msRequestFullscreen; fn_enter.call(p); } else { window.isFs = false; var fn_exit = p.exitFullScreen || p.webkitExitFullScreen || p.mozExitFullScreen || p.oExitFullScreen || p.msExitFullScreen; fn_exit.call(p); }