Firefox身份验证窗口冻结扩展的背景脚本

Firefox身份验证窗口冻结扩展的背景脚本,firefox,firefox-addon,firefox-addon-webextensions,Firefox,Firefox Addon,Firefox Addon Webextensions,我运行了一个私有扩展,它监听WebRequests并在特定的不存在的URL上执行操作: browser.webRequest.onAuthRequired.addListener( doSomething, {urls: ["*://*.xx-xxxxx.net/xxx/connect?*"]}, ["blocking"] ); 它提取查询参数,丢弃新选项卡并连接到服务。当Firefox打开并运行时,操作简单且运行良好 通过在Firefox关闭的情况下单击URL,它

我运行了一个私有扩展,它监听WebRequests并在特定的不存在的URL上执行操作:

browser.webRequest.onAuthRequired.addListener(
    doSomething, 
    {urls: ["*://*.xx-xxxxx.net/xxx/connect?*"]}, 
    ["blocking"]
);
它提取查询参数,丢弃新选项卡并连接到服务。当Firefox打开并运行时,操作简单且运行良好

通过在Firefox关闭的情况下单击URL,它仅在没有身份验证窗口(例如代理)的情况下工作。如果显示“身份验证”窗口,则整个后台脚本将冻结,直到关闭后才会继续。 url只在短时间内有效,因此冻结会使其保持太长时间,url将无效

无论是否显示Authantation窗口,都有可能让后台脚本运行

在关闭Firefox的情况下单击URL

你的意思是在另一个应用程序中单击一个URL,导致Firefox启动并打开链接吗

在启动过程中,Firefox首先加载持久侦听器。这意味着browser.webRequest.onAuthRequired.addListener必须位于后台脚本的顶层。是这样吗? 否则,它会稍后加载,加载时,Firefox已经进行了多次连接尝试,如果它们需要身份验证,就会弹出模式验证弹出窗口

有没有可能让后台脚本运行 无论是否显示Authantation窗口

browser.webRequest.onAuthRequired.addListener在验证弹出窗口之前被激发。 同时,[阻止]将阻止对该请求采取进一步行动,直到该请求得到解决。 doSomething必须是一种承诺,以防止执行弹出窗口,例如将请求传递回浏览器进行处理

然后,doSomething必须通过允许、阻止或重定向等方式处理身份验证


后台脚本可以运行,而与auth pop无关,但这取决于代码的编写方式。“身份验证”弹出窗口不会停止后台脚本的运行。

doSomething,因为Promise是关键。现在它起作用了。非常感谢你。