NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Scroll top/bottom
// @namespace https://github.com/anton-semenchenko/tampermonkey
// @version 0.2
// @license MIT
// @include *
// @description Scrolls page top/bottom
// @author Anton Semenchenko
// @run-at document-body
// @noframes
// @match *
// @grant none
// ==/UserScript==
(function() {
'use strict';
const IMG_SRC_TOP = 'data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KPHRpdGxlPjwvdGl0bGU+CjxnIGlkPSJpY29tb29uLWlnbm9yZSI+CjwvZz4KPHBhdGggZD0iTTQzOC42MjcgMjAxLjM3M2wtMTYwLTE2MGMtMTIuNDk2LTEyLjQ5Ny0zMi43NTctMTIuNDk3LTQ1LjI1NCAwbC0xNjAgMTYwYy0xMi40OTcgMTIuNDk3LTEyLjQ5NyAzMi43NTggMCA0NS4yNTVzMzIuNzU4IDEyLjQ5OCA0NS4yNTUgMGwxMDUuMzcyLTEwNS4zNzN2MzA2Ljc0NWMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJzMzItMTQuMzI3IDMyLTMydi0zMDYuNzQ1bDEwNS4zNzMgMTA1LjM3M2M2LjI0OCA2LjI0OCAxNC40MzggOS4zNzIgMjIuNjI3IDkuMzcyczE2LjM3OS0zLjEyNCAyMi42MjctOS4zNzNjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU3IDAtNDUuMjU0eiI+PC9wYXRoPgo8L3N2Zz4K';
const IMG_SRC_BOTTOM = 'data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KPHRpdGxlPjwvdGl0bGU+CjxnIGlkPSJpY29tb29uLWlnbm9yZSI+CjwvZz4KPHBhdGggZD0iTTQzOC42MjcgMzEwLjYyN2wtMTYwIDE2MGMtMTIuNDk2IDEyLjQ5Ny0zMi43NTcgMTIuNDk3LTQ1LjI1NCAwbC0xNjAtMTYwYy0xMi40OTctMTIuNDk3LTEyLjQ5Ny0zMi43NTggMC00NS4yNTVzMzIuNzU4LTEyLjQ5OCA0NS4yNTUgMGwxMDUuMzcyIDEwNS4zNzN2LTMwNi43NDVjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYzMDYuNzQ1bDEwNS4zNzMtMTA1LjM3M2M2LjI0OC02LjI0OCAxNC40MzgtOS4zNzIgMjIuNjI3LTkuMzcyczE2LjM3OSAzLjEyNCAyMi42MjcgOS4zNzNjMTIuNDk3IDEyLjQ5NyAxMi40OTcgMzIuNzU3IDAgNDUuMjU0eiI+PC9wYXRoPgo8L3N2Zz4K';
function scroll (top) {
return function () {
window.scroll({ top: top, left: 0 });
};
}
function createPanel(...buttons) {
var container = document.createElement('div');
container.style.position = 'fixed';
container.style.border = 'solid 1px black';
container.style.background = '#FFF';
container.style.bottom = '10px';
container.style.left = '5px';
container.style.width = '40px';
container.style.zIndex = '1000000';
buttons.forEach(function (button) {
container.appendChild(button);
});
return container;
}
function creteButton (url, action) {
const button = document.createElement('a');
button.style.cursor = 'pointer';
button.addEventListener('click', action);
const image = document.createElement('img');
image.src = url;
image.style.width = '35px';
image.style.padding = '2px';
button.appendChild(image);
return button;
}
document.body.appendChild(createPanel(
creteButton(IMG_SRC_TOP, scroll(0)),
creteButton(IMG_SRC_BOTTOM, scroll(1000000))
));
})();