You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让油猴页面刷新脚本仅在标签页非活跃状态下运行?

解决方案:结合Page Visibility API实现标签页非活跃时自动刷新

直接用Page Visibility API就能满足你的需求,再配合visibilitychange事件监听标签页状态变化,能让脚本更灵活——活跃使用时停止刷新,切走标签页时自动启动,完美解决当前问题。

修改后的完整脚本

// ==UserScript==
// @name        Tony TIMS Refresh
// @namespace   TonyPony
// @description Reload pages every 1 minute ONLY when tab is inactive
// @version      0.3
// @match https://THE PAGE I WANT TO REFRESH
// @grant       none
// ==/UserScript==

(function() {
    'use strict';

    // 保存定时器ID,方便后续清除
    let refreshTimer;

    // 核心逻辑:非活跃时启动刷新,活跃时停止
    function handleRefresh() {
        // 清除旧定时器,避免重复触发
        if (refreshTimer) {
            clearTimeout(refreshTimer);
            refreshTimer = null;
        }

        // 标签页非活跃时,设置1分钟后刷新
        if (document.hidden) {
            refreshTimer = setTimeout(() => {
                location.reload();
            }, 60 * 1000);
        }
    }

    // 页面加载后先判断初始状态
    handleRefresh();

    // 监听标签页可见性变化,状态切换时自动调整
    document.addEventListener('visibilitychange', handleRefresh);
})();

关键部分说明

  • document.hidden:Page Visibility API提供的属性,true代表标签页当前不可见(非活跃),false代表可见(活跃),直接用来判断状态。
  • visibilitychange事件:标签页在活跃/非活跃状态切换时触发,确保脚本能实时响应你的操作——切走标签时启动刷新,切回来时立刻停止。
  • 定时器管理:每次状态变化先清除旧定时器,避免多个定时器叠加导致频繁刷新。

为什么不只用初始判断?

如果只在页面加载时判断一次document.hidden,中途切换标签页的话脚本不会自动调整行为。加上事件监听后,不管什么时候切换标签,脚本都能立刻做出对应反应。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:45:03