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

如何使用Tampermonkey实现网站指定按钮每小时自动点击?

Tampermonkey 定时自动点击按钮解决方案

原代码失效常见原因

  • 脚本运行时目标按钮还未完成渲染,document.getElementById 无法获取到对应元素
  • 目标网站的按钮绑定了非标准点击事件,原生 click() 方法无法触发业务逻辑
  • 页面进入后台休眠时,setInterval 会被浏览器挂起,导致计时不准、甚至漏执行
  • 没有处理按钮点击后的异常情况,无法保证点击成功后才重置下一轮计时

完整可运行脚本

// ==UserScript==
// @name         每小时自动点击打卡按钮
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  自动定时点击id为mark_attendance的按钮
// @match        *://替换为你的目标网站域名/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';
    let timer = null;
    const INTERVAL = 3600 * 1000; // 1小时的毫秒数

    // 模拟真实用户点击,适配自定义事件绑定的网站
    function simulateClick(element) {
        const event = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window
        });
        element.dispatchEvent(event);
    }

    // 执行点击任务
    function runClickTask() {
        const targetBtn = document.getElementById('mark_attendance');
        if (targetBtn) {
            simulateClick(targetBtn);
            console.log('按钮点击已触发,下一轮执行将在1小时后');
            // 点击成功后重置计时器,避免计时漂移
            clearTimeout(timer);
            timer = setTimeout(runClickTask, INTERVAL);
        } else {
            // 未找到按钮时1分钟后重试,避免动态渲染延迟导致失效
            console.log('未找到目标按钮,1分钟后重试');
            clearTimeout(timer);
            timer = setTimeout(runClickTask, 60 * 1000);
        }
    }

    // 首次执行延迟3秒,适配动态渲染的页面元素
    setTimeout(() => {
        runClickTask();
    }, 3000);
})();

使用注意事项

  • 将脚本中@match字段的占位符替换为实际的目标网站域名,否则脚本不会在对应页面生效
  • 如果按钮id不固定,可以将document.getElementById替换为document.querySelector,通过类名、自定义属性等匹配目标元素
  • 如需保证点击成功才重置计时,可以在点击逻辑后增加成功状态判断,比如检测页面是否出现成功提示文本,再触发下一轮计时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:54:04