[<>]+
by
noromanba
2018-07-14 [2018/07/14 19:11:59]
(Forked from
[<>] by
noromanba)
strictly Chrome/ium well-fullscreen on LXDE or Other DE on Ubuntu
@@ -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 です。