自动刷新页面(高级增强版)

自动刷新页面,支持油猴菜单设置刷新时间,带右下角倒计时与控制按钮,支持暂停、重置。让网页自动定时刷新,解放双手!可自行设置刷新时间。

目前為 2025-06-30 提交的版本,檢視 最新版本

// ==UserScript==
// @name         自动刷新页面(高级增强版)
// @namespace    https://www.wuaishare.cn/
// @version      1.0
// @description  自动刷新页面,支持油猴菜单设置刷新时间,带右下角倒计时与控制按钮,支持暂停、重置。让网页自动定时刷新,解放双手!可自行设置刷新时间。
// @author       逸轩
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    const MIN_INTERVAL = 5;
    let refreshInterval = 0; // 实际读取设置的值
    let timeLeft = 0;
    let isPaused = false;
    const originalTitle = document.title;

    // 读取设置并启动
    (async function init() {
        refreshInterval = parseInt(await GM_getValue('refreshInterval', 0));
        if (!refreshInterval || isNaN(refreshInterval) || refreshInterval < MIN_INTERVAL) {
            console.log('[自动刷新] 未设置或刷新时间小于最小限制,不启动脚本');
            return;
        }
        timeLeft = refreshInterval;
        createControlPanel();
        countdown();
    })();

    // 注册(不可用)油猴菜单
    GM_registerMenuCommand('设置刷新间隔时间(秒)', async () => {
        let input = prompt(`请输入新的刷新间隔(单位:秒,必须 ≥ ${MIN_INTERVAL})`);
        let val = parseInt(input);
        if (!isNaN(val) && val >= MIN_INTERVAL) {
            await GM_setValue('refreshInterval', val);
            alert(`✅ 已设置刷新间隔为 ${val} 秒,刷新页面生效`);
        } else {
            alert('❌ 无效输入,请输入一个不小于 ' + MIN_INTERVAL + ' 的数字');
        }
    });

    GM_registerMenuCommand('关闭自动刷新(设为0)', async () => {
        await GM_setValue('refreshInterval', 0);
        alert('✅ 已关闭自动刷新,请刷新页面生效');
    });

    // 倒计时逻辑
    function countdown() {
        if (!isPaused) {
            document.title = `[${formatTime(timeLeft)}] ${originalTitle}`;
            timeLeft--;
        } else {
            document.title = `[已暂停] ${originalTitle}`;
        }

        if (timeLeft <= 0 && !isPaused) {
            location.reload();
        } else {
            setTimeout(countdown, 1000);
        }
    }

    // 页面右下角控制面板
    function createControlPanel() {
        const panel = document.createElement('div');
        panel.style.position = 'fixed';
        panel.style.bottom = '10px';
        panel.style.right = '10px';
        panel.style.zIndex = '99999';
        panel.style.padding = '10px 12px';
        panel.style.background = 'rgba(0,0,0,0.7)';
        panel.style.color = '#fff';
        panel.style.borderRadius = '8px';
        panel.style.fontFamily = 'sans-serif';
        panel.style.fontSize = '14px';
        panel.style.boxShadow = '0 0 10px rgba(0,0,0,0.3)';
        panel.innerHTML = `
            ⏱️ 剩余:<span id="countdown">${formatTime(timeLeft)}</span><br/>
            <button id="pauseBtn">⏸ 暂停</button>
            <button id="resetBtn">🔁 重置</button>
        `;
        document.body.appendChild(panel);

        const countdownSpan = panel.querySelector('#countdown');
        const pauseBtn = panel.querySelector('#pauseBtn');
        const resetBtn = panel.querySelector('#resetBtn');

        setInterval(() => {
            countdownSpan.textContent = formatTime(timeLeft);
            pauseBtn.textContent = isPaused ? '▶️ 继续' : '⏸ 暂停';
        }, 1000);

        pauseBtn.onclick = () => {
            isPaused = !isPaused;
        };

        resetBtn.onclick = () => {
            timeLeft = refreshInterval;
        };
    }

    function formatTime(t) {
        const h = Math.floor(t / 3600);
        const m = Math.floor((t % 3600) / 60);
        const s = t % 60;
        return `${pad(h)}:${pad(m)}:${pad(s)}`;
    }

    function pad(n) {
        return n.toString().padStart(2, '0');
    }

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址