我有一个包含一系列链接的网页。我安装了 Greasemonkey 脚本以延迟单击每个脚本,但即使我禁用了“阻止弹出视窗”选项,Firefox 也会在几次之后阻止。
无论如何,它们并不是真正的弹出视窗,而只是选项卡,即完整的页面。
Greasemonkey 脚本是
// ==UserScript==
// @name AlbunackSubmitArtistLinksOnPage
// @version 1
// @grant none
// @include http://reports.albunack.net/mbartist_discogsartist_report2*.html
// ==/UserScript==
function delayedOpenLink(link)
{
link.click();
}
function check()
{
var links = document.getElementsByName("link");
var i=1;
for(link of links)
{
setTimeout(delayedOpenLink, 5000 * i, link);
i ;
}
}
setTimeout(check, 5000);
这令人沮丧,因为这是我的网页,并且在每个标签打开之间都有延迟,而且我已经禁用了弹出视窗阻止,那么为什么 Firefox 仍然阻止我的标签
另外,我收到一条讯息,说 Firefox 阻止打开 x 弹出视窗,但是如果您单击它,则只有一个选项可以逐个打开,阻止弹出视窗或管理弹出视窗(但它们已经被取消阻止),但没有选项允许弹出视窗。
将延迟从 5 秒 (5000) 增加到 20 秒 (20000) 允许更多时间通过,但不会更多。
uj5u.com热心网友回复:
怎么样GM_openInTab
?
// ==UserScript==
// @name AlbunackSubmitArtistLinksOnPage
// @version 1
// @grant GM_openInTab
// @include http://reports.albunack.net/mbartist_discogsartist_report2*.html
// ==/UserScript==
const delay = seconds => new Promise(resolve => setTimeout(resolve, seconds * 1e3));
async function check()
{
const links = document.getElementsByName("link");
for (const link of links) {
await delay(5);
GM_openInTab(link.href);
}
}
setTimeout(check, 5000); // or check()
这将每 5 秒点击一次页面上的每个链接。您的原始脚本还有一些其他改进(const
而不是var
, async
/ await
)。
uj5u.com热心网友回复:
问题似乎是打开的标签数量而不是打开的链接数量。我的意思是,如果我更改链接以重用相同的选项卡target="secondpage"
而不是在新选项卡中打开,target="_blank"
那么 Firefox 不会抱怨。
我只能这样做,因为当我打开链接时,Greasemonkey 脚本会启动并在选项卡上提交页面,因此我不再需要该页面。但我必须确保在打开每个链接之间有足够的时间让 Greasemonkey 脚本在打开下一个链接之前完成。
0 评论