我运行了一个私人扩展程序,它侦听WebRequests并在特定(不存在)的URL上执行操作:
browser.webRequest.onAuthRequired.addListener(
doSomething,
{urls: ["*://*.xx-xxxxx.net/xxx/connect?*"]},
["blocking"]
);
它提取查询参数,放弃新的选项卡并连接到服务。打开并运行Firefox时,简单易行。
在Firefox关闭的情况下通过单击URL只能在没有身份验证窗口(例如代理)时使用。如果显示了身份验证窗口,则整个后台脚本将冻结,并且在关闭之前不会继续进行。 该网址仅在短时间内有效,因此冻结会使该网址的保存时间过长,从而使该网址无效。
不管是否显示身份验证窗口,是否都有可能让后台脚本运行。
答案 0 :(得分:1)
通过在Firefox关闭的情况下单击URL
您是说在另一个应用程序中单击一个导致Firefox启动并打开链接的URL吗?
在启动过程中,Firefox首先加载持久性侦听器。这意味着browser.webRequest.onAuthRequired.addListener()
必须位于后台脚本的顶层。是这样吗?
否则,它将在以后加载它,并且在它加载时,Firefox已经进行了几次连接尝试,如果它们需要身份验证,则会弹出模式Auth弹出窗口。
在验证弹出窗口之前会触发是否有可能让后台脚本运行 不管是否显示身份验证窗口。
browser.webRequest.onAuthRequired.addListener()
。
同时,[“ blocking”]将阻止对该请求采取进一步的措施,直到该请求得到解决。
doSomething
必须是一个承诺,以防止执行弹出式窗口,例如将请求传递回浏览器进行处理。
然后doSomething
必须通过允许,阻止或重定向等方式处理身份验证。
后台脚本可以运行,而与auth-pop无关,但这取决于代码的编写方式。 auth弹出窗口不会停止后台脚本的运行。