Firefox 让Greasemonkey在第一次加载时单击按钮,然后每隔一段时间单击?

Firefox 让Greasemonkey在第一次加载时单击按钮,然后每隔一段时间单击?,firefox,click,settimeout,greasemonkey,Firefox,Click,Settimeout,Greasemonkey,我正在尝试制作Greasemonkey脚本,该脚本每隔一段时间单击一个按钮,并且在第一次加载时不需要等待就可以单击它 我制作了这段代码,每120秒点击一次,但第一次加载页面时,我必须等待120秒,代码才能点击GO按钮,否则我必须手动执行此操作: window.setTimeout(function(){document.getElementById("masterPage_cphPageBody_btnGo").click()},120000) 这是网站上与之相关的源代码 <input

我正在尝试制作Greasemonkey脚本,该脚本每隔一段时间单击一个按钮,并且在第一次加载时不需要等待就可以单击它

我制作了这段代码,每120秒点击一次,但第一次加载页面时,我必须等待120秒,代码才能点击GO按钮,否则我必须手动执行此操作:

window.setTimeout(function(){document.getElementById("masterPage_cphPageBody_btnGo").click()},120000)
这是网站上与之相关的源代码

<input id="masterPage_cphPageBody_btnGo" name="masterPage$cphPageBody$btnGo" value="Go" onclick="SetSearchDate();showWaitpage();" class="btn2" type="submit">

如何添加一行,以便在页面第一次加载时单击GO,然后在加载120秒后单击GO


按下GO按钮前后的网页具有相同的URL,因此添加click on GO按钮(无需等待时间)会将网页发送到一个循环中 已单击URL加载的GO
已加载URL并单击 已加载URL并单击

检查第一次单击GO按钮前后页面的差异

因此,我需要脚本立即单击Go按钮,仅当页面上没有显示以下页面时

<span id="masterPage_cphPageBody_lblSelectAvailableTime" class="bodyBold">Select an available time</span>
选择一个可用时间
但如果页面上显示“选择可用时间”文本,脚本应等待120秒


我正在运行:Greasemonkey、Windows 8 64、Firefox

在匿名函数上使用命名函数()

然后使用
document.querySelector
检查该元素是否存在。(该函数比
getElementById
灵活得多)

因此,您的代码变成:

if (null === document.querySelector ("#masterPage_cphPageBody_lblSelectAvailableTime") ) {
    clickGoButton ();  //-- Initial, immediate click.
}

window.setTimeout (clickGoButton, 120000);

function clickGoButton () {
    document.getElementById ("masterPage_cphPageBody_btnGo").click ();
}

考虑到post和pre Go按钮URL是相同的,以避免启动循环,我发现post和pre click之间存在文本差异,并使用它来避免循环

这是最后为我工作的代码

if (/Select an available time/i.test (document.body.innerHTML) )
{
    window.setTimeout (clickGoButton, 120000);
}
else {
  clickGoButton ();
}


function clickGoButton () {
    document.getElementById ("masterPage_cphPageBody_btnGo").click ();
}

按下GO按钮前后的网页具有相同的确切URL,因此添加click on GO按钮(无需等待时间)会将页面发送到URL加载的循环中GO clicked URL加载GO clicked URL加载GO clicked GO clicked…好的,请看修订后问题的更新答案。我想我几乎想出了相同的解决方案。请看我下面的答案。请注意,这种方法会带来很大的性能损失。在这种情况下,这不重要,但这是一个坏习惯。为什么?您的意思是选择实际文本与span ID?。。编码很有趣。。我真的很喜欢做这件小事。。谢谢你的帮助!