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

如何使用Tampermonkey绕过网页JavaScript倒计时计时器?

脚本失效原因

你在用户脚本匿名函数内声明的sec是仅在脚本私有作用域生效的局部变量,和页面全局上下文下的sec没有关联,因此无法修改页面的倒计时数值。

两个方案的可行性说明

两种方案都可实现需求,其中修改全局sec变量的方案1实现更简单、稳定性更高,优先推荐使用。


方案1(推荐):直接修改倒计时变量实现跳过

实现逻辑:直接将页面全局的sec变量设为小于0的值,主动调用一次倒计时函数即可触发下载表单渲染,无需等待计时。
完整油猴脚本代码如下:

// ==UserScript==
// @name         跳过60秒下载倒计时
// @match        *://替换为你实际使用的网站域名/*
// @grant        unsafeWindow
// ==/UserScript==

(function() {
    'use strict';
    // 等待页面逻辑加载完成后执行
    window.addEventListener('load', () => {
        // 修改页面全局倒计时变量,直接满足结束判定条件
        unsafeWindow.sec = -1;
        // 主动调用倒计时函数,触发下载按钮渲染
        unsafeWindow.countDown();
        // 清除原页面的定时器,避免重复执行
        clearInterval(unsafeWindow.sInt);
    });
})();

使用说明:将@match后的域名替换为你实际要生效的站点地址即可。


方案2:修改setInterval间隔实现跳过

该方案需要在页面所有JS加载前就注入代码劫持setInterval方法,识别到countDown对应的定时器时将间隔改为0,实现成本更高,仅做参考:

// ==UserScript==
// @name         劫持定时器跳过倒计时
// @match        *://替换为你实际使用的网站域名/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

const originalSetInterval = window.setInterval;
window.setInterval = function(callback, delay, ...args) {
    if (callback.name === 'countDown') {
        delay = 0;
    }
    return originalSetInterval.apply(window, [callback, delay, ...args]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:04