拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Firefox阻止了延迟打开链接的Greasemonkey脚本

Firefox阻止了延迟打开链接的Greasemonkey脚本

白鹭 - 2022-02-14 2156 0 0

我有一个包含一系列链接的网页。我安装了 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *