【问题标题】:How do I open a Chrome extension in its own window?如何在自己的窗口中打开 Chrome 扩展程序?
【发布时间】:2018-04-29 02:44:43
【问题描述】:

我在 Web 扩展程序 (Anesidora) 中安装了一个播放 Pandora 客户端的 Chrome 扩展程序,它工作正常,但我似乎无法找到在其自己的窗口中打开此扩展程序的方法。

我必须启动 Chrome 浏览器,单击地址栏旁边的扩展程序,然后单击扩展程序,当我单击离开时,音乐扩展程序消失了,让我单击扩展程序并再次查看我的音乐控件。

有没有办法更新 JSON 文件或 popup.html 甚至 backgroud.html 页面的行为,以便可以在一个页面或其他内容中全部查看

【问题讨论】:

    标签: google-chrome google-chrome-extension manifest


    【解决方案1】:

    McSod 的现有answer 涵盖了一种非侵入性方法来打开第三方扩展程序的弹出窗口。

    如果您的目标是永久修改扩展程序,以便单击打开一个单独的窗口,并假设弹出页面在扩展程序的整个生命周期内不会更改,即:

    1. 在清单中由browser_action.default_popup 设置(假设"popup.html"
    2. 扩展代码中没有调用chrome.browserAction.setPopup 来更改它。

    在这些条件下,您需要执行 2 个操作:

    1. 从清单中删除 default_popup 键。
    2. 修改后台脚本(或添加一个,如果需要 - 使用"persistent": false,如果这是唯一的功能)来处理点击:

      chrome.browserAction.onClicked.addListener(tab => {
        chrome.windows.create({
          url: chrome.runtime.getURL("popup.html"),
          type: "popup",
          focused: true,
          /* can also set width/height here, see docs */
        });
      });
      

    这些是最简单的更改。您可以添加代码来检查是否存在已打开的窗口并重新聚焦它。

    请注意,根据弹出窗口的功能,其代码中的假设(很可能是使用tabs API)可能会中断,因为它将是其自身的“当前选项卡/窗口”,而不是其所在的页面按钮被点击了。

    【讨论】:

    • 谢谢! Xan,您的及时回复。您的解决方案更详细一些,我也非常感谢您的回复。正是我想要的。竖起大拇指!
    【解决方案2】:

    如果我对您的理解正确,您只需要 popup.html 的 URL。 右键单击播放器控件,选择Inspect 并在控制台中输入location.href。这样您就可以获得弹出窗口的 URL,您可以使用它在新的浏览器窗口中打开控件。

    【讨论】:

    • 这确实是一个你没有编写的第三方扩展的好方法,尽管有些代码可能会中断。
    • 谢谢! #McSod 先生 - 这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 2013-09-29
    • 2012-02-17
    • 2022-11-13
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多