我正在尝试制作一个按钮,在某个网站上切换 (打开/关闭) HTML5 全屏模式。
阅读了大量文档后,似乎仍然存在一些不一致性,即浏览器如何处理特定的属性。
我采用了“跨浏览器”的方法,它在 Firefox 和 Safari/MacOS 中可以工作,在 Safari/Windows 中部分地工作,但在 Chrome 和 Opera 中完全无法工作。
以下是一些简化的代码片段:
阅读了大量文档后,似乎仍然存在一些不一致性,即浏览器如何处理特定的属性。
我采用了“跨浏览器”的方法,它在 Firefox 和 Safari/MacOS 中可以工作,在 Safari/Windows 中部分地工作,但在 Chrome 和 Opera 中完全无法工作。
以下是一些简化的代码片段:
// class init
initialize: function() {
this.elmButtonFullscreen = $('fullscreen');
this.elmButtonFullscreen.on('click', this.onClickFullscreen.bindAsEventListener(this));
},
// helper methods
_launchFullScreen: function(element) {
if(element.requestFullScreen) { element.requestFullScreen(); }
else if(element.mozRequestFullScreen) { element.mozRequestFullScreen(); }
else if(element.webkitRequestFullScreen) { element.webkitRequestFullScreen(); }
},
_cancelFullScreen: function() {
if(document.cancelFullScreen) { document.cancelFullScreen(); }
else if(document.mozCancelFullScreen) { document.mozCancelFullScreen(); }
else if(document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); }
},
_isFullScreen: function() {
fullScreen = document.fullscreenEnabled || document.mozFullscreenEnabled || document.webkitFullscreenEnabled ? true : false;
if(this.debug) console.log('Fullscreen enabled? ' + fullScreen);
return fullScreen;
},
// callbacks
onClickFullscreen: function(e) {
e.stop();
if(this._isFullScreen()) this._cancelFullScreen();
else this._launchFullScreen(document.documentElement);
}