Javascript 当计时器达到0时,使用Greasemonkey自动单击按钮
下面是一个计时器的示例 我需要一个代码,当计时器达到0时,它会自动点击按钮1809 我尝试过这个,但不起作用:Javascript 当计时器达到0时,使用Greasemonkey自动单击按钮,javascript,greasemonkey,Javascript,Greasemonkey,下面是一个计时器的示例 我需要一个代码,当计时器达到0时,它会自动点击按钮1809 我尝试过这个,但不起作用: var waitForZeroInterval = setInterval (CheckForZero, 0); var hasRun = false; function CheckForZero () { if ( (unsafeWindow.seconds == 0) && (unsafeWindow.milisec == 0) ) {
var waitForZeroInterval = setInterval (CheckForZero, 0);
var hasRun = false;
function CheckForZero () {
if ( (unsafeWindow.seconds == 0) && (unsafeWindow.milisec == 0) )
{
clearInterval (waitForZeroInterval);
var targButton = document.getElementById ('bottone1809');
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
targButton.dispatchEvent (clickEvent);
};
if (!hasRun) {
hasRun = true;
setInterval(CheckForZero, 35000);
};
}
更多更新:
HTML
这很好用。。我已经测试过了。我会在1秒后收到警报。单击按钮,然后调用do_some函数以显示警报。
您可以在此处查看它是单击按钮一次然后停止,还是根本不单击按钮?
看起来
hasRun
逻辑是错误的
我不能在那个网站进行测试,因为(1)它让我非常恼火,(2)它似乎需要注册——我不会这么做。因此,请确认它是这样运行的:
var waitForZeroInterval = null;
function RestartZeroCheck () {
waitForZeroInterval = setInterval (CheckForZero, 100);
}
function CheckForZero () {
if ( (unsafeWindow.seconds == 0) && (unsafeWindow.milisec == 0) )
{
clearInterval (waitForZeroInterval);
var targButton = document.getElementById ('bottone1809');
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
targButton.dispatchEvent (clickEvent);
//--- After a short pause, start checking for the next timer to zero.
setTimeout (RestartZeroCheck, 333);
};
}
RestartZeroCheck ();
请注意,如果这样做有效,那么检查页面结构表明:
var targButton = document.getElementById ('bottone1809');
可以更改为:
var targButton = document.querySelector (
"#left-inside div.post-wrapper td center input[id^='bottone']"
);
这样拍卖号码就不必硬编码。不,不要!只需使用
document.getElementById(“bottone1809”)。单击()。另外,您不需要准备()greasemonkey脚本。我已经在测试后更新了代码。。请现在检查一下。它应该可以工作。@Bergi你是对的,不需要准备好,但是document.getElementById(“bottone1809”)。click()实际上不工作。你是什么意思,问题是“如果(…)”
??具体点。另外,请回答我提出的问题:按钮是否单击一次并停止,还是根本没有单击?函数CheckForZero(){if((unsafeWindow.seconds==0)和&(unsafeWindow.miliesec==0)){alert('ciao')}
对prezzipazzi不起作用,我不知道为什么页面JS变量与问题所暗示的不同(例如,seconds
不是int)。此外,如果您让脚本在选项卡中运行,然后在另一个窗口中执行某些操作,Firefox将限制非焦点窗口的JS。最后,您尝试的操作无疑违反服务条款,并且在您所在的位置可能是非法的。
var targButton = document.getElementById ('bottone1809');
var targButton = document.querySelector (
"#left-inside div.post-wrapper td center input[id^='bottone']"
);