- // ==UserScript==
- // @name Scroll Up & Down Arrows With Hotkeys
- // @description Scroll Up & Down arrows, if you leave mouse on arrow it will slowly scroll, you can adjust speed and control scroll with hotkeys.
- // @author guizi22
- // @version 1.0
- // @match http://*/*
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
- // @namespace https://greasyfork.org/users/4243
- // ==/UserScript==
-
-
- var scroll_speed = 500;//The smaller, the faster.When you click the button, it works.
- var move_speed = 100;//The smaller, the faster. When your mouse moves on the button, it works.
- var toumingc_control = 1;//If you don't want to get the opacity(tou'ming in Chinese) changed, set it to 0;
-
- //if(/https?:\/\/twitter\.com/i.test(window.location.href)) document.getElementById("doc").style.position = "static";
-
- var DOM_VK_SLOWER = 189;
- var DOM_VK_FASTER = 187;
- var DOM_VK_ESCAPE = 27;
-
- window.addEventListener('keydown', adjust_speed, true);
-
- //调节滚屏速度
- function adjust_speed(e)
- {
- if(e.keyCode == DOM_VK_FASTER) // 按“=”滚屏加速
- {
- move_speed *= 0.80;
- }
- else if(e.keyCode == DOM_VK_SLOWER) // 按“-”滚屏减速
- {
- move_speed *= 1.20;
- }
- else if(e.keyCode == DOM_VK_ESCAPE) // 按“Esc”恢复初始滚屏速度
- {
- move_speed = 100;
- }
- }
-
- //向上滚屏
- function up() {
-
- $(window).scrollTop($(window).scrollTop() - 1);
- fq = setTimeout(up, move_speed)
- };
-
- //向下滚屏
- function dn() {
-
- $(window).scrollTop($(window).scrollTop() + 1);
- fq = setTimeout(dn, move_speed)
- };
-
- //创建滚屏箭头
- function create_button() {
- if(document.body){
- var a = document.createElement('span');
- var b = document.createElement('span');
- a.id = "shang";
- b.id = "xia";
- var css_a = 'opacity:1;-moz-transition-duration:0.2s;background:url(data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAUCAYAAACAl21KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB+SURBVDhPY1i1atV/amAGahgCMoNhaIGlS5cKAp19BoRBbLJcj2QILDJINwzoAmMgfoclIkBixkS5DI8hMJcRNgxoSBoOl6CnNZBhaVhdBjWE1MSJahjQkA4KEmYH2GUrV66cSYEhYB+AzKBtFiHkQqKiH6Ro1CDCQTWgYQQAs81DU0G/83sAAAAASUVORK5CYII=) no-repeat scroll 50% 50% rgba(0, 0, 0, 0.7);border-radius:5px 0 0 5px;cursor:pointer;height:36px;margin-top:-24px;width:36px;position:fixed;right:10px;bottom:53%;z-index:1';
- var css_b ='opacity:1;-moz-transition-duration:0.2s;background:url(data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAUCAYAAACAl21KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACPSURBVDhPY2DAAlatWvUfH8amB6vYqEGEg2pgw4iQ7cTKM6xcuXImsYpxqQOZAQ4woIIOCgzrQAl1oEFpZBiWhitFgwx7R4SBIDXYDYGZDFRgTMAwkCHGhBMRJMxwGUa8ITCbli5dKgg08AySN8+AxIhyCboiJMPIN4Qsm6miiYioxltawvSDYogohYTUAQC80UNTOht/YwAAAABJRU5ErkJggg==) no-repeat scroll 50% 50% rgba(0, 0, 0, 0.7);border-radius:5px 0 0 5px;cursor:pointer;height:36px;margin-top:-24px;width:36px;position:fixed;right:10px;top:53%;z-index:1';
-
- a.style.cssText = css_a;
- b.style.cssText = css_b;
- a.addEventListener('mouseover',up, false);
- b.addEventListener('mouseover',dn, false);
- a.addEventListener('mouseout',function(){clearTimeout(fq);},false);
- b.addEventListener('mouseout',function(){clearTimeout(fq);},false);
- a.addEventListener('click', function(){ $("html,body").animate({scrollTop:0},scroll_speed); }, false);
- b.addEventListener('click', function(){ $("html,body").animate({scrollTop:$(document).height()},scroll_speed); }, false);
-
- if(toumingc_control){
- $(window).scroll(function(){
- if($(window).scrollTop()){
- a.style.display = "";
- }
- else{
- a.style.display ="none";
- }
- a.style.opacity=($(window).scrollTop())/($(document).height()-$(window).height());
- b.style.opacity=1 - ( a.style.opacity );
- });
- }
- document.body.appendChild(a);
- document.body.appendChild(b);
- }
- };
- if(window != window.top) return 0;
- if($(document).height()-$(window).height()) create_button();
-
- //翻页快捷键
- (function () {
- var newHeight = document.body.scrollHeight + 9999999999;
- var scroll = {
- 's' : function() { scrollBy(0, 40) },
- 'S' : function() { scrollBy(0, 40) }, // 往下翻一点点
- 'd' : function() { scrollBy(0, window.innerHeight / 1.2) },
- 'D' : function() { scrollBy(0, window.innerHeight / 1.2) }, // 往下翻一页
-
- 'w' : function() { scrollBy(0, -40) },
- 'W' : function() { scrollBy(0, -40) }, // 往上翻一点点
- 'a' : function() { scrollBy(0, -window.innerHeight / 1.2) },
- 'A' : function() { scrollBy(0, -window.innerHeight / 1.2) }, // 往上翻一页
-
- 'q' : function() { scrollTo(0, 0) },
- 'Q' : function() { scrollTo(0, 0) }, // 回页首
-
- 'e' : function() { scrollTo(0,document.body.scrollHeight) },
- 'E' : function() { scrollTo(0,document.body.scrollHeight) },// 回页尾
- };
- var formElement = { 'input':true, 'button':true, 'select':true, 'textarea':true };
- window.addEventListener('keypress',
- function(e) {
- if (e.metaKey || e.ctrlKey || e.altKey ||
- formElement[e.target.tagName.toLowerCase()] || e.target.isContentEditable || document.designMode ==="on") {
- return; }
- var key = (e.shiftKey? 'S-' : '') + String.fromCharCode(e.charCode);
- if (scroll[key]) {
- scroll[key]();
- e.preventDefault();
- e.stopPropagation();
- }
- }, false);
- })();