如何在自己的窗口中打开Chrome扩展程序?

时间:2017-11-15 18:32:43

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

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

我必须启动Chrome浏览器,点击地址栏旁边的扩展程序,然后点击扩展程序,一旦我点击,音乐扩展程序就会消失,让我点击扩展程序再次查看我的音乐控件。

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

Pandora music player extension screenshot

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

如果您的目标是永久修改扩展名,以便点击打开一个单独的窗口,并假设弹出页面在扩展的整个生命周期内都没有变化,即:

  1. 由清单中的browser_action.default_popup设置(假设为"popup.html"
  2. 扩展程序代码中没有任何内容可以调用chrome.browserAction.setPopup来更改它。
  3. 在这些条件下,您需要执行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 */
        });
      });
      
    3. 这些是最简单的变化。您可以添加检查已打开窗口是否存在的代码,然后重新聚焦。

      请注意,根据弹出窗口的功能,其代码中的假设(很可能是使用tabs API)可能会中断,因为它将是"当前标签/窗口"为自己而不是点击按钮的页面。