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

如何在Tampermonkey中实现页面刷新时时间数组同步更新与时间自动刷新功能

解决方案:页面刷新时更新时间数组 & Tampermonkey自动刷新实现

嘿,针对你提出的两个时间处理需求,我整理了具体的实现方案,咱们一步步来:


1. 页面刷新时更新时分秒数组

页面刷新时浏览器会重新渲染DOM,咱们只需要在页面完全加载完成后,重新抓取最新的时间文本并分割成数组即可。这里可以封装一个复用函数,避免重复写冗余代码:

实现代码

// 封装获取时间数组的工具函数,传入元素选择器就能返回[小时, 分钟, 秒]数组
function getTimeArray(selector) {
    const timeText = document.querySelector(selector).innerText;
    return timeText.split(':');
}

// 页面DOM渲染完成后执行(刷新页面时会自动触发)
window.addEventListener('DOMContentLoaded', function() {
    // 更新serverTime1数组
    const serverTime1 = getTimeArray('#commands_outgoings > table > tbody > tr:nth-child(2) > td:nth-child(3) > span');
    // 更新serverTime数组
    const serverTime = getTimeArray('#serverTime');
    
    console.log('刷新后的serverTime1:', serverTime1);
    console.log('刷新后的serverTime:', serverTime);
});

小提示

  • 用DOMContentLoaded事件能确保我们操作DOM时,所有元素都已经渲染完成,不会出现找不到节点的报错;
  • 如果你的页面用了jQuery,也可以把querySelector换成$(selector).text(),效果完全一致。

2. Tampermonkey(油猴脚本)中实现自动刷新

油猴脚本的核心是定时执行时间获取逻辑,同时还要考虑页面动态加载内容的情况(比如时间是后端异步返回的)。下面是完整的可直接用的脚本示例:

完整Tampermonkey脚本

// ==UserScript==
// @name         自动刷新时间数组脚本
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  定时更新并打印页面的时间数组
// @author       You
// @match        https://你的目标网站域名/*  // 这里一定要替换成你要运行脚本的网站URL
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 复用的时间数组获取函数,增加了容错处理
    function getTimeArray(selector) {
        const element = document.querySelector(selector);
        // 如果元素还没加载出来,返回默认值避免报错
        if (!element) return ['00', '00', '00'];
        return element.innerText.split(':');
    }

    // 定义更新数组的核心逻辑
    function updateTimeArrays() {
        const serverTime1 = getTimeArray('#commands_outgoings > table > tbody > tr:nth-child(2) > td:nth-child(3) > span');
        const serverTime = getTimeArray('#serverTime');
        
        console.log('当前serverTime1:', serverTime1);
        console.log('当前serverTime:', serverTime);
    }

    // 脚本加载后先执行一次初始获取
    window.addEventListener('DOMContentLoaded', updateTimeArrays);

    // 定时自动刷新,这里设置1秒刷新一次,你可以根据需求调整毫秒数
    setInterval(updateTimeArrays, 1000);

    // 可选优化:如果页面时间是动态更新的(比如AJAX实时推送),用MutationObserver监听元素变化
    const serverTimeElement = document.querySelector('#serverTime');
    if (serverTimeElement) {
        const observer = new MutationObserver(function(mutations) {
            mutations.forEach(function(mutation) {
                // 只要元素文本变化,就立刻更新数组
                if (mutation.type === 'characterData' || mutation.type === 'childList') {
                    updateTimeArrays();
                }
            });
        });
        observer.observe(serverTimeElement, { childList: true, subtree: true, characterData: true });
    }
})();

关键注意点

  • @match:必须替换成你要运行脚本的目标网站URL,否则脚本不会生效;
  • 定时间隔:setInterval的第二个参数是毫秒数,示例是1秒刷新一次,你可以根据实际需求调整;
  • 动态内容兼容:如果页面的时间是后端实时推送更新的,用MutationObserver可以监听元素文本变化,比定时刷新更实时;
  • 容错处理:获取元素时增加了判断,避免页面加载慢时元素还没出现导致脚本报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:07:32