HTML5 – 防止全屏模式
我正在使用带有嵌入式YouTubevideo的Fullscreen API来检测浏览器窗口是否已进入全屏模式。 我的工作很棒。
我想做的是防止出现进入全屏模式的默认行为。 我想放入自己的全屏模式逻辑,以便我可以在YouTube播放器上叠加DOM元素。 目前,我可以在输入后立即退出全屏模式,但这会给用户带来糟糕和混乱的体验。
一种解决方法是使用YouTube的播放器API参数删除全屏按钮,并使用我自己的逻辑添加我自己的按钮,但这并不理想,因为用户仍然可以双击YouTube播放器使其全屏显示。
这是我检测浏览器全屏状态的代码:
$(document).on("fullscreenchange webkitfullscreenchange msfullscreenchange mozfullscreenchange", function(event) { onFullScreenChange(event); }); function onFullScreenChange(event) { var fullScreenElement = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement; var isFullscreen = !!fullScreenElement; console.log("In fullscreen mode?", isFullscreen); if (isFullscreen === true) { // TODO: Prevent the browser from entering full screen mode. These three lines don't prevent that behavior event.stopImmediatePropagation(); event.stopPropagation(); event.preventDefault(); return false; // The commented code below works. Ideally, we'd want to prevent the browser from even entering full screen mode //document.webkitExitFullscreen(); } }
使用preventDefault()
, stopPropagation()
和stopImmediatePropagation()
都不起作用,所以我陷入了困境。 如果确实可以,我该如何阻止浏览器进入全屏模式?
使用youtube iframe api
禁用全屏按钮: fs:0
禁用键盘控件: disablekb :1
加载播放器后,删除全屏选项:
// Get DOM video player not YT videoplayer videoPlayer = document.getElementById('player'); // don't allow full screen videoPlayer.allowFullscreen = false;
使用Fullscreen_API在DOM播放器(在我们的示例中为iframe)上全屏触发
videoPlayer.requestFullScreen()
如果按下ESC键或video结束,将全屏离开(自定义事件处理)
JsFiddle 工作示例:
这就是我做的:)
希望这个帮助:)