v
by
noromanba
2018-02-16 [2018/02/16 14:53:52]
dumb jump to bottom of page; [Ctrl +] End alternatives
@@ -12,10 +12,10 @@
// TBD simulate End key press
-/* for mobile
+/* for mobile and legacy browsers
+javascript:window.scrollTo(0,Math.max.apply(null,[document.documentElement.scrollHeight,document.documentElement.clientHeight,document.body.scrollHeight,document.body.clientHeight]))
javascript:window.scrollTo(0,Number.MAX_SAFE_INTEGER)
javascript:window.scrollTo(0,Number.MAX_VALUE)
-javascript:window.scrollTo(0,Math.max.apply(null,[document.documentElement.scrollHeight,document.documentElement.clientHeight,document.body.scrollHeight,document.body.clientHeight]))
*/
// avoid Magic Number e.g.
@@ -43,13 +43,77 @@
// FIXME `Number.MAX_SAFE_INTEGER` methods do not working on Firefox 58.0.2 Desktop
// expected scroll to bottom, but actual scroll to top; like this
// window.scrollTo(0, 0)
- // perhaps Fx treated like a "non-finite values", `NaN` and +/-`Infinity` c.f.
+ // perhaps Fx treated like a "finite values", `NaN` and +/-`Infinity` c.f.
// https://www.w3.org/TR/cssom-view/#dom-window-scroll
// https://www.w3.org/TR/cssom-view/#normalize-non-finite-values
// https://www.w3.org/TR/cssom-view/#webidl-values
//
- // Firefox 58.0.2 mobile works well
- // `Number.MAX_SAFE_INTEGER` and `Number.MAX_VALUE` methods
+ // scrollTo restricted from 32-bit limit?
+ //
+ // Firefox 58.0.2 mobile works fine
+ // `Number.MAX_SAFE_INTEGER`, `Number.MAX_VALUE` and `1e100` (!)
//*/
})();
+// DBG
+// window.scrollTo() w/ constants X-Browser
+//
+// - Chromium 64.0.3282.167 32-bit arch
+// - Firefox 58.0.2 32-bit arch
+// - Edge mobile 1.0.0.1656 Blink 64-bit arch
+// - Firefox mobile 58.0.2 64-bit arch
+//
+//
+// Browser Compatibility Table
+//
+// [x] works
+// [ ] like a finite, treated to `0`
+// [-] not check yet
+//
+// | Browser | height | MAX_SAFE_INTEGER | MAX_VALUE | exponential | hex |
+// |--------------|--------|------------------|-----------|-------------|-----|
+// | Chromium | [x] | [x] | [ ] | [ ] | [x] |
+// | Firefox | [x] | [ ] | [ ] | [ ] | [x] |
+// | Edge mobi | [x] | [x] | [ ] | [ ] | [-] |
+// | Firefox mobi | [x] | [x] | [x] | [x] | [-] |
+//
+// exponential: 1e100
+// hex: 0xFFFFFFF (< signed 32-bit limit)
+//
+//
+// IEEE 754[-2008] c.f.
+// https://en.wikipedia.org/wiki/IEEE_754
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
+//
+// Number.MAX_SAFE_INTEGER // 9007199254740991
+// Number.MAX_SAFE_INTEGER
+// .toPrecision(16) // 9007199254740991
+// 2 ** 53 - 1 // 9007199254740991
+// Number.MAX_VALUE // 1.7976931348623157e+308
+//
+//
+// MAX_VALUE truncates
+//
+// bitwise op 32-bit signed number c.f.
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers
+// Math.pow(2, 32 -1) // 2147483648
+//
+// Number.MAX_VALUE | 0 // 0
+// ~~Number.MAX_VALUE // 0
+// parseInt(Number.MAX_VALUE, 10) // 1
+// Math.trunc(Number.MAX_VALUE) // 1.7976931348623157e+308
+//
+//
+// Hex playing
+//
+// Number(0xFFFFFFFFFFFFFFFFF) // 295147905179352830000
+// Number(0xFFFFFFFFFFFFFFFFF0) // 4.722366482869645e+21
+//
+// Chromium works
+// window.scroll(0, '0x'.padEnd(Number.MAX_SAFE_INTEGER.toString().length, 'F'))
+//
+// Firefox works limit
+// window.scrollTo(0, 0xFFFFFFF) // 268435455
+// 2 ** 32 - 1 // 2147483648
+// window.scrollTo(0, 0xFFFFFFF0) // 4294967280
+
/*
* @title v
* @description dumb jump to bottom of page; [Ctrl +] End alternatives
* @include http://*
* @include https://*
* @license MIT License https://opensource.org/licenses/MIT
* @javascript_url
*/
// via
// https://hail2u.net/blog/coding/window-scrollto-infinity-infinity.html
// TBD simulate End key press
/* for mobile and legacy browsers
javascript:window.scrollTo(0,Math.max.apply(null,[document.documentElement.scrollHeight,document.documentElement.clientHeight,document.body.scrollHeight,document.body.clientHeight]))
javascript:window.scrollTo(0,Number.MAX_SAFE_INTEGER)
javascript:window.scrollTo(0,Number.MAX_VALUE)
*/
// avoid Magic Number e.g.
// 99999..., 10000... and 1e100...
(() => {
'use strict';
//*/ boring...
window.scrollTo(0, Math.max(...[
document.documentElement.scrollHeight,
document.documentElement.clientHeight,
document.body.scrollHeight,
document.body.clientHeight,
]));
/*/
window.scrollTo(0, Number.MAX_SAFE_INTEGER || Infinity);
// XXX `Infinity` is fallback/workaround for IE (might be fixed) c.f.
// https://hail2u.net/blog/coding/window-scrollto-infinity-infinity.html
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
//
// You can use `Number.MAX_VALUE` BUT exponential;
// so hard to try decimalization before truncate c.f.
// https://stackoverflow.com/questions/18719775/parsing-and-converting-exponential-values-to-decimal-in-javascript
//
// FIXME `Number.MAX_SAFE_INTEGER` methods do not working on Firefox 58.0.2 Desktop
// expected scroll to bottom, but actual scroll to top; like this
// window.scrollTo(0, 0)
// perhaps Fx treated like a "finite values", `NaN` and +/-`Infinity` c.f.
// https://www.w3.org/TR/cssom-view/#dom-window-scroll
// https://www.w3.org/TR/cssom-view/#normalize-non-finite-values
// https://www.w3.org/TR/cssom-view/#webidl-values
//
// scrollTo restricted from 32-bit limit?
//
// Firefox 58.0.2 mobile works fine
// `Number.MAX_SAFE_INTEGER`, `Number.MAX_VALUE` and `1e100` (!)
//*/
})();
// DBG
// window.scrollTo() w/ constants X-Browser
//
// - Chromium 64.0.3282.167 32-bit arch
// - Firefox 58.0.2 32-bit arch
// - Edge mobile 1.0.0.1656 Blink 64-bit arch
// - Firefox mobile 58.0.2 64-bit arch
//
//
// Browser Compatibility Table
//
// [x] works
// [ ] like a finite, treated to `0`
// [-] not check yet
//
// | Browser | height | MAX_SAFE_INTEGER | MAX_VALUE | exponential | hex |
// |--------------|--------|------------------|-----------|-------------|-----|
// | Chromium | [x] | [x] | [ ] | [ ] | [x] |
// | Firefox | [x] | [ ] | [ ] | [ ] | [x] |
// | Edge mobi | [x] | [x] | [ ] | [ ] | [-] |
// | Firefox mobi | [x] | [x] | [x] | [x] | [-] |
//
// exponential: 1e100
// hex: 0xFFFFFFF (< signed 32-bit limit)
//
//
// IEEE 754[-2008] c.f.
// https://en.wikipedia.org/wiki/IEEE_754
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
//
// Number.MAX_SAFE_INTEGER // 9007199254740991
// Number.MAX_SAFE_INTEGER
// .toPrecision(16) // 9007199254740991
// 2 ** 53 - 1 // 9007199254740991
// Number.MAX_VALUE // 1.7976931348623157e+308
//
//
// MAX_VALUE truncates
//
// bitwise op 32-bit signed number c.f.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers
// Math.pow(2, 32 -1) // 2147483648
//
// Number.MAX_VALUE | 0 // 0
// ~~Number.MAX_VALUE // 0
// parseInt(Number.MAX_VALUE, 10) // 1
// Math.trunc(Number.MAX_VALUE) // 1.7976931348623157e+308
//
//
// Hex playing
//
// Number(0xFFFFFFFFFFFFFFFFF) // 295147905179352830000
// Number(0xFFFFFFFFFFFFFFFFF0) // 4.722366482869645e+21
//
// Chromium works
// window.scroll(0, '0x'.padEnd(Number.MAX_SAFE_INTEGER.toString().length, 'F'))
//
// Firefox works limit
// window.scrollTo(0, 0xFFFFFFF) // 268435455
// 2 ** 32 - 1 // 2147483648
// window.scrollTo(0, 0xFFFFFFF0) // 4294967280
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。