Tampermonkey脚本在部分网站无法自动运行的问题求助
Tampermonkey脚本无法自动点击元素的解决方案
修复setInterval参数错误
你当前代码的问题在于,setInterval(document.getElementById("nextButton").click(), 1000)是直接执行了click()方法,把返回值传给了setInterval,这会导致按钮只被点击一次,后续的定时任务完全无效。正确写法是传递一个函数:setInterval(function() { const nextBtn = document.getElementById("nextButton"); if (nextBtn) nextBtn.click(); }, 1000); setInterval(function() { const submitBtn = document.getElementById("submitButton"); if (submitBtn) submitBtn.click(); }, 1000);改用DOM监听等待元素加载
目标网站的按钮可能是动态生成的,document.ready触发时元素还没出现在DOM里。可以用MutationObserver监听DOM变化,直到元素出现再执行点击:function waitAndClick(elementId) { const observer = new MutationObserver((mutations) => { const element = document.getElementById(elementId); if (element) { element.click(); observer.disconnect(); // 找到元素后停止监听,避免重复操作 } }); observer.observe(document.body, { childList: true, subtree: true }); } // 调用方法监听目标按钮 waitAndClick("nextButton"); waitAndClick("submitButton");调整脚本运行时机
在Tampermonkey脚本的元数据里,设置@run-at document-idle(页面完全加载后执行),如果还是不行,尝试@run-at document-start配合延迟执行:// ==UserScript== // @name Auto Click Buttons // @namespace http://tampermonkey.net/ // @version 0.1 // @description Auto click next and submit buttons on target site // @author You // @match https://asso.hust.edu.vn/adfs/ls/* // @run-at document-idle // @grant none // ==/UserScript== (function() { 'use strict'; // 这里放入上面的等待点击代码 })();避免无效重复点击
如果按钮点击后会消失或状态改变,记得在触发点击后停止定时器/观察者,减少不必要的资源消耗:const nextInterval = setInterval(function() { const nextBtn = document.getElementById("nextButton"); if (nextBtn) { nextBtn.click(); clearInterval(nextInterval); } }, 1000);
内容的提问来源于stack exchange,提问作者Randy VU
相关产品推荐
相关产品推荐

