页面自动刷新

带有开始/停止控制的自动刷新脚本

// ==UserScript==
// @name         页面自动刷新
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  带有开始/停止控制的自动刷新脚本
// @author       xuexim
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    'use strict';

    const REFRESH_DELAY = 1000; // 刷新间隔(毫秒)
    const STORAGE_KEY = 'autoRefreshActive';
    let refreshInterval = null;

    // Toast提示函数
    function showToast(msg, duration = 3000) {
        const existingToast = document.querySelector('.refresh-toast');
        if (existingToast) existingToast.remove();

        const toast = document.createElement('div');
        toast.className = 'refresh-toast';
        toast.innerHTML = msg;
        toast.style.cssText = `
            font-size: .8rem;
            color: rgb(255, 255, 255);
            background-color: rgba(0, 0, 0, 0.6);
            padding: 50px 150px;
            border-radius: 4px;
            position: fixed;
            top: 30%;
            left: 50%;
            transform: translateX(-50%);
            width: 300px;
            text-align: center;
            transition: opacity 0.3s;
            z-index: 10000;
        `;
        document.body.appendChild(toast);

        setTimeout(() => {
            toast.style.opacity = '0';
            setTimeout(() => toast.remove(), 300);
        }, duration);
    }

    // 开始刷新
    function startRefresh() {
        if (refreshInterval) return;

        GM_setValue(STORAGE_KEY, true); // 保存刷新状态
        refreshInterval = setInterval(() => {
            window.location.reload();
        }, REFRESH_DELAY);

        showToast(`已开启自动刷新(${REFRESH_DELAY/1000}秒)`, 2000);
        updateMenu();
    }

    // 停止刷新
    function stopRefresh() {
        if (refreshInterval) {
            clearInterval(refreshInterval);
            refreshInterval = null;
            GM_setValue(STORAGE_KEY, false); // 更新刷新状态
            showToast('已停止自动刷新', 2000);
            updateMenu();
        }
    }

    // 更新菜单
    function updateMenu() {
        // 清除现有菜单
        menuIds.forEach(id => GM_unregisterMenuCommand(id));
        menuIds = [];

        // 根据状态添加新菜单
        if (GM_getValue(STORAGE_KEY, false)) {
            menuIds.push(GM_registerMenuCommand('停止刷新', stopRefresh));
        } else {
            menuIds.push(GM_registerMenuCommand('开始刷新', startRefresh));
        }
    }

    // 初始化
    let menuIds = []; // 存储菜单项ID
    try {
        // 检查保存的状态并恢复
        if (GM_getValue(STORAGE_KEY, false)) {
            refreshInterval = setInterval(() => {
                window.location.reload();
            }, REFRESH_DELAY);
        }
        updateMenu();
    } catch (e) {
        console.error('刷新脚本初始化失败:', e);
        showToast('脚本初始化失败', 3000);
    }

    // 清理
    window.addEventListener('unload', () => {
        if (refreshInterval && !GM_getValue(STORAGE_KEY, false)) {
            clearInterval(refreshInterval);
        }
    });
})();

QingJ © 2025

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