[<>]+

    @@ -21,6 +21,8 @@ (() => { 'use strict'; + class NotImplementedError extends ReferenceError { } + // chaotic naming when prefixing; Fullscreen or FullScreen c.f. // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing @@ -37,7 +39,7 @@ document.webkitFullscreenElement : 'webkitCurrentFullscreenElement' in Document.prototype ? document.webkitCurrentFullscreenElement : - (() => { throw new ReferenceError('not implemented yet') })(); + (() => { throw new NotImplementedError(); })(); // https://developer.mozilla.org/en-US/docs/Web/API/Document/exitFullscreen // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing @@ -48,7 +50,7 @@ document.webkitExitlFullScreen.bind(document) : Document.prototype.webkitCancelFullScreen ? document.webkitCancelFullScreen.bind(document) : - () => { throw new ReferenceError('not implemented yet') }; + (() => { throw new NotImplementedError(); })(); // do not react keyboard/mouse on `html` context at few major versions e.g. // Chromium 65.0.3325.181-0ubuntu0.16.04.1 @@ -68,7 +70,7 @@ context.webkitRequestFullscreen.bind(context) : Element.prototype.webkitRequestFullScreen ? context.webkitRequestFullScreen.bind(context) : - () => { throw new ReferenceError('not implemented yet') }; + (() => { throw new NotImplementedError(); })(); fullscreen ? exitFullScreen() : requestFullscreen(); })();
  • /*
     * @title [<>]+
     * @description strictly Chrome/ium well-fullscreen on LXDE or Other DE on Ubuntu
     * @include http://*
     * @include https://*
     * @contributor noromanba   http://let.hatelabo.jp/noromanba/let/hJmdkteA6YED
     * @license     MIT License https://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    // ill-fullscreen c.f.
    // https://ubuntuforums.org/showthread.php?t=2244152
    // https://askubuntu.com/questions/638148/how-to-make-chrome-truly-full-screen-in-lubuntu
    // and can not fix the problem to edit ~/.config/openbox/lubuntu-rc.xml
    //
    // Fullscreen API is not standarized yet c.f.
    // https://caniuse.com/#feat=fullscreen
    // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API
    
    // TBD smart feature detection
    (() => {
        'use strict';
    
        class NotImplementedError extends ReferenceError { }
    
        // chaotic naming when prefixing; Fullscreen or FullScreen c.f.
        // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing
    
        // `document.fullscreen()` is obsolete
        // https://developer.mozilla.org/en-US/docs/Web/API/Document/fullscreen
        // instead of `document.fullScreen()` `document.webkitIsFullScreen()`
        // https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/fullscreenElement
        // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing
        const fullscreen =
            // string feature detection for avoid Illegal invocation due to Object
            'fullscreenElement' in Document.prototype ?
            document.fullscreenElement :
            'webkitFullscreenElement' in Document.prototype ?
            document.webkitFullscreenElement :
            'webkitCurrentFullscreenElement' in Document.prototype ?
            document.webkitCurrentFullscreenElement :
            (() => { throw new NotImplementedError(); })();
    
        // https://developer.mozilla.org/en-US/docs/Web/API/Document/exitFullscreen
        // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing
        const exitFullScreen =
            Document.prototype.exitFullScreen ?
            document.exitFullScreen.bind(document) :
            Document.prototype.webkitExitlFullScreen ?
            document.webkitExitlFullScreen.bind(document) :
            Document.prototype.webkitCancelFullScreen ?
            document.webkitCancelFullScreen.bind(document) :
            (() => { throw new NotImplementedError(); })();
    
        // do not react keyboard/mouse on `html` context at few major versions e.g.
        //      Chromium  65.0.3325.181-0ubuntu0.16.04.1
        const context = [
            document.documentElement,
            document.head,
            document.body,
        ].shift();
    
        // differences between case only; "Screen" or "screen"
        // https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen
        // https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing
        const requestFullscreen =
            Element.prototype.requestFullscreen ?
            context.requestFullscreen.bind(context) :
            Element.prototype.webkitRequestFullscreen ?
            context.webkitRequestFullscreen.bind(context) :
            Element.prototype.webkitRequestFullScreen ?
            context.webkitRequestFullScreen.bind(context) :
            (() => { throw new NotImplementedError(); })();
    
        fullscreen ? exitFullScreen() : requestFullscreen();
    })();
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2018/07/14 19:11:59 - 2018-07-14
  2. 2018/07/14 10:15:22 - 2018-07-14
  3. 2018/07/14 08:58:14 - 2018-07-14
  4. 2018/07/14 07:11:08 - 2018-07-14
  5. 2018/07/14 06:37:21 - 2018-07-14
  6. 2018/07/14 06:21:20 - 2018-07-14
  7. 2018/07/14 06:06:04 - 2018-07-14
  8. 2018/07/14 06:05:13 - 2018-07-14