我正在尝试制作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按钮之前和之后的网页具有相同的确切URL,因此在没有等待时间的情况下添加点击GO按钮会将hte页面发送到循环 URL加载GO点击了检查了第一次点击GO按钮之前和之后页面的差异...
因此,只有在页面上未显示以下页面时,我才需要脚本立即单击“Go”按钮
<span id="masterPage_cphPageBody_lblSelectAvailableTime" class="bodyBold">Select an available time</span>
但如果页面上显示“选择可用时间”文本,则脚本应等待120 secon
我正在运行:Greasemonkey,Windows 8 64,Firefox
答案 0 :(得分:1)
使用命名函数代替匿名函数(Often a good idea anyway)。
然后使用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 ();
}
答案 1 :(得分:0)
考虑到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 ();
}