AutoScroll Mobile

AutoScroll avec boutons tactiles pour mobiles et tablettes

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         AutoScroll Mobile
// @namespace    https://greasyfork.org/users/1429467
// @description  AutoScroll avec boutons tactiles pour mobiles et tablettes
// @include      http*
// @version      1.3
// @author       Lakfu sama
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    let scrolling = false;
    let speed = 50;
    let scrollInterval;

    function startScrolling() {
        if (!scrolling) {
            scrolling = true;
            scrollInterval = setInterval(() => {
                window.scrollBy(0, 5);
            }, speed);
            updateButtonState();
        }
    }

    function stopScrolling() {
        scrolling = false;
        clearInterval(scrollInterval);
        updateButtonState();
    }

    function toggleScrolling() {
        scrolling ? stopScrolling() : startScrolling();
    }

    function increaseSpeed() {
        if (speed > 10) {
            speed -= 10;
            restartScrolling();
        }
    }

    function decreaseSpeed() {
        speed += 10;
        restartScrolling();
    }

    function restartScrolling() {
        if (scrolling) {
            stopScrolling();
            startScrolling();
        }
    }

    function scrollToTop() {
        window.scrollTo({ top: 0, behavior: 'smooth' });
    }

    function scrollToBottom() {
        window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
    }

    function updateButtonState() {
        let button = document.getElementById('scroll-toggle');
        if (scrolling) {
            button.textContent = '⏸️ Stop';
            button.style.backgroundColor = '#ff5555';
        } else {
            button.textContent = '▶️ Start';
            button.style.backgroundColor = '#4CAF50';
        }
    }

    // Supprimer les anciens boutons pour éviter les doublons
    function removeExistingButtons() {
        document.querySelectorAll('.scroll-btn').forEach(btn => btn.remove());
    }

    // Création des boutons tactiles
    function createButton(id, text, onClick, bgColor, position) {
        let button = document.createElement('button');
        button.id = id;
        button.textContent = text;
        button.onclick = onClick;
        button.style.position = 'fixed';
        button.style.bottom = '5px'; // Position basse
        button.style.right = position + 'vw'; // Position horizontale dynamique
        button.style.width = '50px'; // Taille adaptée au tactile
        button.style.height = '50px';
        button.style.fontSize = '16px';
        button.style.border = 'none';
        button.style.borderRadius = '10px';
        button.style.backgroundColor = bgColor;
        button.style.color = 'white';
        button.style.zIndex = '10000';
        button.className = 'scroll-btn';
        document.body.appendChild(button);
    }

    // Supprimer les boutons existants avant de les recréer
    removeExistingButtons();

    // Création des boutons avec un espacement uniforme
    let buttons = [
        { id: 'scroll-toggle', text: '▶️ Start', action: toggleScrolling, color: '#4CAF50', pos: 2 },
        { id: 'scroll-up', text: '⬆️', action: scrollToTop, color: '#2196F3', pos: 12 },
        { id: 'scroll-down', text: '⬇️', action: scrollToBottom, color: '#2196F3', pos: 22 },
        { id: 'speed-up', text: '⏩+', action: increaseSpeed, color: '#FF9800', pos: 32 },
        { id: 'speed-down', text: '⏪-', action: decreaseSpeed, color: '#FF9800', pos: 42 }
    ];

    buttons.forEach(btn => {
        createButton(btn.id, btn.text, btn.action, btn.color, btn.pos);
    });

})();