【问题标题】:Allow Firefox AddOn to focus window允许 Firefox AddOn 聚焦窗口
【发布时间】:2021-11-12 11:03:38
【问题描述】:

我正在尝试编写一个 Firefox 插件,它允许用户快速将特定打开的窗口带到前面。在研究如何聚焦窗口时,我了解到浏览器会严格限制这一点以避免误用。如果它不是用户想要的,我完全支持。在我的情况下,用户将安装插件以明确具有此功能,因此聚焦窗口将是用户想要的。

执行此操作的经典方法是 Window.focus(),但即使 Mozilla 文档也说,此操作的成功取决于用户浏览器的配置。

请求将窗口置于前面。它可能由于用户设置而失败,并且在此方法返回之前不能保证窗口位于最前面。 - Source

在我的浏览器(Ubuntu 上的 Firefox 94)中它不起作用。

我还读到将about:config 中的dom.disable_window_flip 设置为true 将启用Window.focus(),但它没有 - 而且这对于插件来说不是一种可行的方法。

Firefox AddOns 使用permission system,我的期望是必须有一个权限,允许为这个特定的 AddOn 聚焦窗口。不幸的是,权限没有很好的记录,我无法通过反复试验找到正确的权限。

我在网上找到的关于通过插件聚焦窗口的大部分稀缺信息都是 5 到 10 年前发布的,现在已经不起作用了。

我尝试了几种方法,例如从弹出脚本中调用browser.windows.update(tabId, { focused: true })(我有一个different issue)。当弹出脚本的消息要求时,我还尝试注入一个调用Window.focus() 的内容脚本。这些都不起作用。

所以我的第一个问题是:今天(2021 年,Firefox 94)有什么方法可以让 AddOns 将窗口放在前面吗?

如果是这样:谁能告诉我怎么做?

提前致谢!

【问题讨论】:

    标签: javascript firefox firefox-addon firefox-addon-webextensions


    【解决方案1】:

    我认为你需要命名你的窗口然后聚焦它。

    const newWindow = window.open('http://....', 'NameOfTheWindow');
    newWindow.focus();
    

    【讨论】:

    • 感谢您的回复。我知道可以从打开它们的脚本中聚焦窗口。但我尝试为用户打开的窗口执行此操作。用户应该像往常一样使用他们的浏览器,插件将允许将特定选项卡保存在快速访问列表中,并在需要时快速跳回它们。对于同一窗口中的选项卡,这已经很好用了,但是如果选项卡是后台窗口,我就无法正常工作。
    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多