[<>]+
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
@@ -13,7 +13,7 @@
// 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.
+// Fullscreen API are Living Standard yet c.f.
// https://caniuse.com/#feat=fullscreen
// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API
@@ -23,12 +23,12 @@
class NotImplementedError extends ReferenceError { }
- // chaotic naming when prefixing; Fullscreen or FullScreen c.f.
+ // chaotic naming when prefixing; *Fullscreen or *FullScreen mixed 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()`
+ // 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 =
@@ -43,25 +43,26 @@
// 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) :
+ const exitFullscreen =
+ Document.prototype.exitFullscreen ?
+ document.exitFullscreen.bind(document) :
+ Document.prototype.webkitExitFullscreen ?
+ document.webkitExitFullscreen.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.
+ // do not react keyboard/mouse on `html` or `head` context at few major versions e.g.
// Chromium 65.0.3325.181-0ubuntu0.16.04.1
+ // but malfunction when `body`
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
+ // 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 ?
@@ -72,6 +73,6 @@
context.webkitRequestFullScreen.bind(context) :
(() => { throw new NotImplementedError(); })();
- fullscreen ? exitFullScreen() : requestFullscreen();
+ 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 are Living Standard 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 mixed 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.webkitExitFullscreen ?
document.webkitExitFullscreen.bind(document) :
Document.prototype.webkitCancelFullScreen ?
document.webkitCancelFullScreen.bind(document) :
(() => { throw new NotImplementedError(); })();
// do not react keyboard/mouse on `html` or `head` context at few major versions e.g.
// Chromium 65.0.3325.181-0ubuntu0.16.04.1
// but malfunction when `body`
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 です。