|
|
@@ -18,43 +18,16 @@
|
|
|
* along with SingleFile. If not, see <http://www.gnu.org/licenses/>.
|
|
|
*/
|
|
|
|
|
|
-/* global window, Element, document, dispatchEvent, UIEvent, setTimeout */
|
|
|
+/* global screen, window, document, dispatchEvent, UIEvent */
|
|
|
|
|
|
(() => {
|
|
|
|
|
|
- const SCROLL_LENGTH = 200;
|
|
|
- const SCROLL_DELAY = 100;
|
|
|
-
|
|
|
- window._singleFile_getBoundingClientRect = Element.prototype.getBoundingClientRect;
|
|
|
- Element.prototype.getBoundingClientRect = function () {
|
|
|
- const boundingRect = window._singleFile_getBoundingClientRect.call(this);
|
|
|
- const quarterLeft = Math.floor(window.innerWidth / 4);
|
|
|
- const quarterTop = Math.floor(window.innerHeight / 4);
|
|
|
- const top = (boundingRect.top > 0 && boundingRect.top < window.innerHeight) ? boundingRect.top : boundingRect.top > window.innerHeight ? window.innerHeight - quarterTop : quarterTop;
|
|
|
- const left = (boundingRect.left > 0 && boundingRect.left < window.innerHeight) ? boundingRect.left : boundingRect.left > window.innerHeight ? window.innerHeight - quarterLeft : quarterLeft;
|
|
|
- const bottom = top + boundingRect.height;
|
|
|
- const right = left + boundingRect.width;
|
|
|
- return { x: boundingRect.x, y: boundingRect.y, top, bottom, left, right, width: boundingRect.width, height: boundingRect.height };
|
|
|
- };
|
|
|
- dispatchEvent(new UIEvent("scroll"));
|
|
|
- const scrollTop = document.documentElement.scrollTop;
|
|
|
- scroll(SCROLL_LENGTH, document.documentElement.scrollHeight - window.innerHeight);
|
|
|
-
|
|
|
- function scroll(offsetY, maxOffsetY) {
|
|
|
- document.documentElement.__defineGetter__("scrollTop", () => offsetY);
|
|
|
- window.__defineGetter__("scrollY", () => offsetY);
|
|
|
- window.__defineGetter__("pageYOffset", () => offsetY);
|
|
|
- processScroll();
|
|
|
-
|
|
|
- function processScroll() {
|
|
|
- if (offsetY < maxOffsetY) {
|
|
|
- offsetY += SCROLL_LENGTH;
|
|
|
- } else {
|
|
|
- offsetY = scrollTop;
|
|
|
- }
|
|
|
- dispatchEvent(new UIEvent("scroll"));
|
|
|
- window._singleFile_timeoutScroll = setTimeout(processScroll, SCROLL_DELAY);
|
|
|
- }
|
|
|
- }
|
|
|
+ window.__defineGetter__("innerHeight", () => document.documentElement.scrollHeight);
|
|
|
+ window.__defineGetter__("innerWidth", () => document.documentElement.scrollWidth);
|
|
|
+ document.documentElement.__defineGetter__("clientHeight", () => document.documentElement.scrollHeight);
|
|
|
+ document.documentElement.__defineGetter__("clientWidth", () => document.documentElement.scrollWidth);
|
|
|
+ screen.__defineGetter__("height", () => document.documentElement.scrollHeight);
|
|
|
+ screen.__defineGetter__("width", () => document.documentElement.scrollWidth);
|
|
|
+ dispatchEvent(new UIEvent("resize"));
|
|
|
|
|
|
})();
|