滑动器6

控制网页自动向上滑动的速度

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         滑动器6
// @namespace    your-namespace
// @version      1.0
// @description  控制网页自动向上滑动的速度
// @author       Your Name
// @match        http://www.htmanga3.top/*
// @grant        none
// ==/UserScript==

if (location.href.indexOf('https://www.baidu.com/s') == 0 || location.href.indexOf('http://www.baidu.com/s') == 0) {
    var jq = jQuery.noConflict();
    Compatible(jq);
    var chaoxing = false;
} else if (location.href.indexOf('chaoxing') != -1) {
    var jq = jQuery.noConflict();
    Compatible(jq);
    var chaoxing = true;
} else {
    Compatible(jQuery);
    var chaoxing = false;
}

function Compatible(jq) {
    var box = jq('<div class="move-box"><input type="number" class="move-val" value="1" title="速度"/><p class="start" title="开始/暂停">▶</p><p class="reverse" title="反方向">▼</p></div>');
    jq('body').append(box);

    (function () {
        jq('.move-box').css({
            'width': '40px',
            'height': '90px',
            'background': '#fff',
            'box-shadow': '0 0 4px 0 #ccc',
            'border-radius': '8px',
            'user-select': 'none',
            'overflow': 'hidden',
            'position': 'fixed',
            'top': '80px',
            'left': '4px',
            'z-index': 99999999
        });
        jq('.move-val').css({
            'width': '100%',
            'height': '30px',
            'padding': 0,
            'color': '#000',
            'border': 'none',
            'outline': 'none',
            'font-size': '18px',
            'text-align': 'center'
        })
        jq('.start').css({
            'margin': 0,
            'width': '100%',
            'height': '30px',
            'line-height': '30px',
            'text-align': 'center',
            'background': 'red',
            'color': '#fff',
            'font-size': '20px',
            'cursor': 'pointer'
        })
        jq('.reverse').css({
            'margin': 0,
            'width': '100%',
            'height': '30px',
            'line-height': '30px',
            'text-align': 'center',
            'color': '#ccc',
            'cursor': 'pointer'
        })
    }())

    var elinput = document.getElementsByClassName('move-val')[0],
        elstart = document.getElementsByClassName('start')[0],
        elreverse = document.getElementsByClassName('reverse')[0],
        speed = 1,
        isMove = false,
        isHide = true,
        flag = false,
        lookTop = 0,
        timers = null,
        scrollTimer = null; // 新增定时器

    // Listen for double tap events
    var clickCount = 0;
    var lastClickTime, timeoutId;
    function handleClick() {
        clickCount++;
        if (clickCount === 1) {
            lastClickTime = new Date().getTime();
            timeoutId = setTimeout(function () {
                clickCount = 0;
            }, 300);
        } else if (clickCount === 2) {
            clearTimeout(timeoutId);
            clickCount = 0;
            elstart.click(); // trigger scrolling function
        }
    }

    window.addEventListener('touchstart', handleClick);

    elinput.oninput = setIn;

    function setIn() {
        if (this.value > 10) {
            this.value = 10;
        }
        if (this.value < -10) {
            this.value = -10;
        }
        if (this.value == '') {
            this.value = 0;
        }
        speed = Number(this.value);
        speed < 0 ? elreverse.innerText = '▲' : elreverse.innerText = '▼';
    }

    elstart.onclick = function () {
        if (isMove) {
            this.innerText = '▶';
            flag = false;
            isMove = false;
            isHide = true;
            clearTimeout(scrollTimer); // 停止滚动定时器
        } else {
            this.innerText = '◉';
            flag = true;
 isMove = true;
        isHide = false;
        move(); // 开始滚动
    }
    hideShow();
}

elreverse.onclick = function () {
    speed = -speed;
    speed < 0 ? this.innerText = '▲' : this.innerText = '▼';
}

function move() {
    if (flag) {
        var imglook = jq('.imglook');
        if (imglook.length === 0) {
            window.scrollBy(0, speed);
            if (chaoxing && jq(window).height() + jq(window).scrollTop() >= jq(document).height() - 180) {
                if ($('#loadbutton').length == 1) {
                    clearTimeout(timers);
                    $('#loadbutton').click();
                    timers = setTimeout(() => {
                        isMove ? '' : elstart.click()
                    }, 200)
                }
            }
            if (jq(window).height() + jq(window).scrollTop() >= jq(document).height() - 2 || jq(window).scrollTop() == 0) {
                elstart.innerText = '▶';
                flag = false;
                isMove = false;
                isHide = true;
                hideShow();
                return; // 结束滚动
            }
        } else {
            // 超新课程资料文件预览
            var loopNum = 0
            lookTop = imglook[0].scrollTop
            imglook[0].scrollBy(0, speed)
            function loopTest() {
                loopNum++
                setTimeout(() => {
                    if (imglook[0].scrollTop === lookTop) {
                        loopTest()
                        if (loopNum > 6) {
                            elstart.innerText = '▶';
                            flag = false;
                            isMove = false;
                            isHide = true;
                            hideShow();
                            return; // 结束滚动
                        }
                    }
                }, 200)
            }
            if (imglook[0].scrollTop === lookTop) {
                loopTest()
            }
        }

        // 滚动结束后停止1秒,再次启动滚动
        clearTimeout(scrollTimer);
        scrollTimer = setTimeout(function () {
            move();
        }, 2000);
    }
}

jq(document).keydown((e) => {
    var event = e || window.event;
    if (event.keyCode == 32) {
        elstart.click();
        return false;
    }
    if (event.keyCode == 38) {
        elinput.value++;
    }
    if (event.keyCode == 40) {
        elinput.value--;
    }
    setIn.call(elinput);
})

// 隐藏
hideShow()

function hideShow() {
    //  if(!isHide) return;
    var timer2 = null;

    function hide() {
        jq('.move-box').stop().animate({
            'left': '-30px'
        }, 400)
    }

    timer2 = setTimeout(hide, 6000);

    jq('.move-box').hover(function () {
        //  if(!isHide) return;
        clearInterval(timer2);
        jq(this).stop().animate({
            'left': '4px'
        }, 600)
    }, function () {
        //  if(!isHide) return;
        timer2 = setTimeout(hide, 6000);
    })
}
}