Greasemonkey 是否在第一次加载时单击按钮,然后每隔一段时间单击一次按钮?
Have Greasemonkey click a button at first load and then in intervals?
我正在尝试制作 Greasemonkey 脚本,它可以每隔一段时间点击一个按钮,并且在第一次加载时无需等待就可以点击它。
我编写了每 120 秒点击一次的代码,但第一次加载页面时,我必须等待 120 秒才能让代码点击“开始”按钮,否则我必须手动执行。 :
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">
如何在页面第一次加载时和之后的 120 秒添加一行以点击 GO?
按下 GO 按钮之前和之后的网页完全相同 URL 因此添加无需等待时间的 GO 按钮点击将使 hte 页面进入循环
URL 已加载 GO 点击
URL 已加载 GO 点击
URL 已加载 GO 点击
...
检查第一次点击GO按钮前后页面的差异...
所以我需要脚本来立即单击 Go 按钮,只有当页面上没有显示以下页面时
<span id="masterPage_cphPageBody_lblSelectAvailableTime" class="bodyBold">Select an available time</span>
但如果 "Select an available time" 文本显示在页面上,脚本应等待 120 秒
我是 运行:Greasemonkey,Windows 8 64,Firefox
在匿名函数上使用命名函数 (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 ();
}
考虑到 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 ();
}
我正在尝试制作 Greasemonkey 脚本,它可以每隔一段时间点击一个按钮,并且在第一次加载时无需等待就可以点击它。
我编写了每 120 秒点击一次的代码,但第一次加载页面时,我必须等待 120 秒才能让代码点击“开始”按钮,否则我必须手动执行。 :
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">
如何在页面第一次加载时和之后的 120 秒添加一行以点击 GO?
按下 GO 按钮之前和之后的网页完全相同 URL 因此添加无需等待时间的 GO 按钮点击将使 hte 页面进入循环
URL 已加载 GO 点击
URL 已加载 GO 点击
URL 已加载 GO 点击
...
检查第一次点击GO按钮前后页面的差异...
所以我需要脚本来立即单击 Go 按钮,只有当页面上没有显示以下页面时
<span id="masterPage_cphPageBody_lblSelectAvailableTime" class="bodyBold">Select an available time</span>
但如果 "Select an available time" 文本显示在页面上,脚本应等待 120 秒
我是 运行:Greasemonkey,Windows 8 64,Firefox
在匿名函数上使用命名函数 (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 ();
}
考虑到 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 ();
}