Skip to content

Instantly share code, notes, and snippets.

@ali-master
Last active December 27, 2016 00:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ali-master/0119e6e104290dc63620cf138560e6a7 to your computer and use it in GitHub Desktop.
Save ali-master/0119e6e104290dc63620cf138560e6a7 to your computer and use it in GitHub Desktop.
Javascript Full Screen API

Javascript fullScreen API

(function () {
    var fullScreenApi = {
        supportsFullScreen: false,
        nonNativeSupportsFullScreen: false,
        isFullScreen: function () { return false; },
        requestFullScreen: function () { },
        cancelFullScreen: function () { },
        fullScreenEventName: '',
        prefix: ''
    },
            browserPrefixes = 'webkit moz o ms khtml'.split(' ');
    // check for native support
    if (typeof document.cancelFullScreen != 'undefined') {
        fullScreenApi.supportsFullScreen = true;
    } else {
        // check for fullscreen support by vendor prefix
        for (var i = 0, il = browserPrefixes.length; i < il; i++) {
            fullScreenApi.prefix = browserPrefixes[i];
            if (typeof document[fullScreenApi.prefix + 'CancelFullScreen'] != 'undefined') {
                fullScreenApi.supportsFullScreen = true;
                break;
            }
        }
    }
    // update methods to do something useful
    if (fullScreenApi.supportsFullScreen) {
        fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';
        fullScreenApi.isFullScreen = function () {
            switch (this.prefix) {
                case '':
                    return document.fullScreen;
                case 'webkit':
                    return document.webkitIsFullScreen;
                default:
                    return document[this.prefix + 'FullScreen'];
            }
        }
        fullScreenApi.requestFullScreen = function (el) {
            return (this.prefix === '') ? el.requestFullScreen() : el[this.prefix + 'RequestFullScreen']();
        }
        fullScreenApi.cancelFullScreen = function (el) {
            return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen']();
        }
    }
    window.fullScreenApi = fullScreenApi;
})();

Usage

const fullScreenApi = window.fullScreenApi;

// check browser fullscreen api support >>> return Boolean
fullScreenApi.supportsFullScreen

// check the browser state in fullScreen Mode, then if the browser in fullscreen, return true >>>> return Boolean
fullScreenApi.isFullScreen();

// Cancel the Browser fullScreen Mode
fullScreenApi.cancelFullScreen();

// send request to browser for set fullScreen Mode
fullScreenApi.requestFullScreen(document.documentElement);

// return the browser fullScreen Event Name >>> return String
fullScreenApi.fullScreenEventName
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment