I am trying to make a button that will turn on (off / on) HTML5 full-screen mode on a specific website.
After reading a lot of documentation, there still seem to be some inconsistencies between how browsers handle certain properties for it.
I went for a "cross-browser" approach that works in Firefox and Safari / MacOS, partially works in Safari / Windows, and completely doesn't work in Chrome and Opera.
Some castrated code snippets:
// 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); }
source share