【问题标题】:Firefox blocks Greasemonkey script that opens links with delayFirefox 阻止了延迟打开链接的 Greasemonkey 脚本
【发布时间】:2022-01-05 14:52:39
【问题描述】:

我有一个包含一系列链接的网页。我安装了 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) 允许更多时间通过,但不会更多。

【问题讨论】:

  • 脚本名称可以(并且应该)包含空格:)

标签: javascript firefox userscripts


【解决方案1】:

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 代替 varasync/await)。

【讨论】:

  • 这对我没有用,它没有做任何事情,但是谢谢你提醒我 GM_openInTab 函数它看起来很有用,尤其是在打开标签的同时保持专注于调用标签的能力。
  • reports.albunack.net/mbartist_discogsartist_report2.html 对我有用 - 新标签将在 5 秒后开始打开。
  • 嗯,你在 Firefox 中使用 Greasemonkey 吗?
  • @PaulTaylor 哦,我错过了你使用 Greasemonkey 的事实。我强烈建议您切换到 Tampermonkey 或 Violentmonkey。事实上,Greasemonkey 的控制开发者says as much himself。 Greasemonkey 4 引入了GM 对象——它的所有属性都是异步的。
  • 我可以在 firefox 上使用它们吗?
【解决方案2】:

问题似乎是打开的标签数量而不是打开的链接数量。我的意思是,如果我更改链接以使用 target="secondpage" 重复使用相同的选项卡,而不是使用 target="_blank" 在新选项卡中打开,那么 Firefox 不会抱怨.

我只能这样做,因为当我打开链接时,Greasemonkey 脚本会启动并在选项卡上提交页面,因此我不再需要该页面。但我必须确保在打开每个链接之间有足够的时间让 Greasemonkey 脚本在打开下一个链接之前完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2022-07-11
    相关资源
    最近更新 更多