🎉 欢迎访问GreasyFork.Org 镜像站!本镜像站由公众号【爱吃馍】搭建,用于分享脚本。联系邮箱📮

Greasy fork 爱吃馍镜像

TopAndDownButtonsEverywhere

Top and Down buttons everywhere (no Jquery) 在一切页面上根据情况自动添加一个/两个按钮:页面最上方、页面最下方,鼠标悬停的时候,缓缓翻页移动

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

// ==UserScript==
// @name    TopAndDownButtonsEverywhere
// @namespace    TopAndDownButtonsEverywhere
// @description Top and Down buttons everywhere (no Jquery) 在一切页面上根据情况自动添加一个/两个按钮:页面最上方、页面最下方,鼠标悬停的时候,缓缓翻页移动
// @version 1.4
// @author  Max Max
// @license MIT
// @include *
// @run-at  document-end
// @grant   none
// ==/UserScript==

// [1] skip all iframe 
if (window.self!=window.top) {return}

// create element
if (!window.ce) function ce(n) { return document.createElement(n); } // end of function

// add style
function addStyle(css) {
    var head = document.head || document.getElementsByTagName('head')[0];
    if (head) {
        var style = ce("style");
        style.type = "text/css";
        style.appendChild(document.createTextNode(css));
        head.appendChild(style);
    } // end if
} // end of function

// global variables
var position, 
// figure out if this is moz || IE because they use documentElement
el = (navigator.userAgent.indexOf('Firefox') != -1 || navigator.userAgent.indexOf('MSIE') != -1) ? document.documentElement : document.body,
// timer
t1, t2,
// speed by
speed_by_click = 500, // edit this value
speed_by_over = 100,  // edit this value
// z-index
zIindex = 999;        // edit this value

// move up
function move_up() { 
    position = document.documentElement.scrollTop || document.body.scrollTop;
    window.scrollTo(0, position-1);
    t1 = setTimeout(move_up, speed_by_over);
} // end of function

// move downn
function move_dn() { 
    position = document.documentElement.scrollTop || document.body.scrollTop;
    window.scrollTo(0, position+1);
    t2 = setTimeout(move_dn, speed_by_over);
} // end of function

// document height
function getDocumentHeight() {
	return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
} // end of function

// document scroll
function get_scroll(a) {
    var d = document,
        b = d.body,
        e = d.documentElement,
        c = "client" + a,
        a = "scroll" + a;
    return /CSS/.test(d.compatMode)? (e[c]< e[a]) : (b[c]< b[a])
} // end of function




function scrollTo(element, to, duration) {
    var start = element.scrollTop,
        change = to - start,
        currentTime = 0,
        increment = 20,
        newDuration = (typeof(duration) === 'undefined') ? 500: duration;
		
    var animateScroll = function(){        
        currentTime += increment;
        var val = Math.easeInOutQuad(currentTime, start, change, newDuration);                        
        element.scrollTop = val; 
        if(currentTime < newDuration) {
            setTimeout(animateScroll, increment);
        }
    };
    animateScroll();
} // end of function

//t = current time
//b = start value
//c = change in value
//d = duration
Math.easeInOutQuad = function (t, b, c, d) {
    t /= d/2;
    if (t < 1) return c/2*t*t + b;
    t--;
    return -c/2 * (t*(t-2) - 1) + b;
};

function create_btn_element() { 
    // get scroll
	var up, dn, 
	    scrolled,
	    h = get_scroll('Height');
    // exit
    if(!h) { return; } // end if
	
	// add css
	shareCSS(); 

	// if 
	if(el){ 
		// create DOM element
		up = ce('span');
		dn = ce('span');
		// set attribute
		up.setAttribute('id','play_btn_up');
		dn.setAttribute('id','play_btn_dn');
		// set class
		up.className = "play_btn";
		dn.className = "play_btn";
        // append element
		document.body.appendChild(up);
		document.body.appendChild(dn);
		
		// scroll
		scrolled = window.pageYOffset || document.documentElement.scrollTop;
		// if scroll 
		up.style.display = (scrolled > 0)  ? "" : "none";
		
		// add event over
		up.addEventListener('mouseover', move_up, false);
		dn.addEventListener('mouseover', move_dn, false);
		// add event out
		up.addEventListener('mouseout', function(){clearTimeout(t1);},false);
		dn.addEventListener('mouseout', function(){clearTimeout(t2);},false);
		// add event click
		up.addEventListener('click', function(){ scrollTo(el, 0, speed_by_click); }, false);
		dn.addEventListener('click', function(){ scrollTo(el, getDocumentHeight(), speed_by_click); }, false);
		
		// add event scroll
		window.onscroll = function() { 
		    var scrolled = window.pageYOffset || document.documentElement.scrollTop, diffHeight = document.body.scrollHeight - window.innerHeight;
			// if scroll up
			up.style.display = (scrolled > 0)  ? "" : "none";
			// if scroll dn
			dn.style.display = (diffHeight > scrolled)  ? "" : "none";
		}; // end of function
	} // end if
} // end of function

// add css
function shareCSS(){ 
    // variables
    var s='', img_up, img_dn; 
	
	// img vs button
    img_up = 'data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAUCAYAAACAl21KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAB+SURBVDhPY1i1atV/amAGahgCMoNhaIGlS5cKAp19BoRBbLJcj2QILDJINwzoAmMgfoclIkBixkS5DI8hMJcRNgxoSBoOl6CnNZBhaVhdBjWE1MSJahjQkA4KEmYH2GUrV66cSYEhYB+AzKBtFiHkQqKiH6Ro1CDCQTWgYQQAs81DU0G/83sAAAAASUVORK5CYII=';
	img_dn = 'data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAUCAYAAACAl21KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACPSURBVDhPY2DAAlatWvUfH8amB6vYqEGEg2pgw4iQ7cTKM6xcuXImsYpxqQOZAQ4woIIOCgzrQAl1oEFpZBiWhitFgwx7R4SBIDXYDYGZDFRgTMAwkCHGhBMRJMxwGUa8ITCbli5dKgg08AySN8+AxIhyCboiJMPIN4Qsm6miiYioxltawvSDYogohYTUAQC80UNTOht/YwAAAABJRU5ErkJggg==';
    // button id
    s+='#play_btn_up { position:fixed; right:0; bottom:53%;z-index:'+zIindex+'; height:36px; width:36px; cursor:pointer; background:url('+img_up+') no-repeat scroll 50% 50% rgba(0, 0, 0, 0.7); border-radius:5px 0 0 5px; margin-top:-24px; }'; 
    s+='#play_btn_dn { position:fixed; right:0; top:53%;   z-index:'+zIindex+'; height:36px; width:36px; cursor:pointer; background:url('+img_dn+') no-repeat scroll 50% 50% rgba(0, 0, 0, 0.7); border-radius:5px 0 0 5px; margin-top:-24px; }'; 
    // button class
    s+='.play_btn { -webkit-transition-duration:0.5s linear; -o-transition-duration:0.5s linear; -moz-transition-duration:0.5s linear; transition-duration:0.5s linear; opacity:0.65; }'; 
    s+='.play_btn:hover { opacity:1; }'; 
	// append
    addStyle(''+s);
} // end of function

// run it
create_btn_element();