🏠 Home 

9gag - Scroll down to current position

Scroll down back where the focus was when you clicked the arrow-up icon or scrolled up


Install this script?
// ==UserScript==
// @name         9gag - Scroll down to current position
// @namespace    https://github.com/Procyon-b
// @version      0.3.1
// @description  Scroll down back where the focus was when you clicked the arrow-up icon or scrolled up
// @author       Achernar
// @match        https://9gag.com/*
// @grant        none
// ==/UserScript==
(function() {
"use strict";
var pos=[0,0], allPos={}, L, btt=document.querySelector('.back-to-top')
if (!btt) return;
btt.addEventListener('click', toTop);
window.addEventListener('scroll', savePos);
function toTop() {
if (window.scrollY < pos[1]) {
L.midpos=[window.scrollX, window.scrollY];
backMid.style.display='';
}
}
function savePos() {
var d=window.scrollY - pos[1];
if (d < 0) showHide(true);
if (d >= 0) {
pos[0]=window.scrollX;
pos[1]=window.scrollY;
showHide();
}
if (L.midpos && (window.scrollY >= L.midpos[1]) ) {
hideMBt();
}
}
function showHide(show=false) {
if (show == L.disp) return;
back.style.display= show?'':'none';
L.disp=show;
}
var back=document.createElement('a');
document.querySelector('header#top-nav').appendChild(back);
back.href='javascript:;';
back.classList='back-to-top';
back.style='transform: rotate(180deg); top: 5em; display: none;';
back.title='Scroll back to position';
back.addEventListener('click', function(e){
if (pos) window.scrollTo.apply(null, pos);
showHide();
});
var backMid=back.cloneNode(false);
backMid.style='transform: rotate(180deg); top: 8em; display: none;';
backMid.title='Scroll back to mid-position';
document.querySelector('header#top-nav').appendChild(backMid);
backMid.addEventListener('click', function(e){
if (L.midpos) window.scrollTo.apply(null, L.midpos);
});
function hideMBt() {
backMid.style.display='none';
delete L.midpos;
}
var hRS=history.replaceState;
history.replaceState=function() {
setTimeout(function(){console.info('%c history.replaceState() ', 'background: lightblue;', location.href, {arguments});}, 0);
setTimeout(LocPos, 0);
pos=[0,0];
L={disp:false};
return hRS.apply(history, arguments);
}
function LocPos() {
if (!allPos[location.href]) {
if ( (location.hash == '#comment') && allPos[location.href.split('#')[0]] )
allPos[location.href]=allPos[location.href.split('#')[0]];
else allPos[location.href]={pos:[0,0], disp:false};
}
L=allPos[location.href];
pos=L.pos;
back.style.display= L.disp ? '':'none';
backMid.style.display= L.midpos?'':'none';
}
// set clones
allPos['https://9gag.com/home']=allPos['https://9gag.com/']={pos:[0,0], disp:false};
LocPos();
})();