【问题标题】:How to launch a new window in Google Chrome Extension如何在 Google Chrome 扩展程序中启动新窗口
【发布时间】:2015-03-01 22:23:35
【问题描述】:

我正在尝试为 Google Chrome 开发一个扩展程序,但我遇到了一些问题,我想在用户单击图标时启动或创建一个新窗口。

像这样:http://i.imgur.com/8iRkEOb.png

非常感谢!

【问题讨论】:

  • 请注意,您的示例显示了一个标题栏。如果有人想删除标题栏,目前在 Web Extensions 中是不可能做到的。

标签: javascript google-chrome-extension


【解决方案1】:

首先,如果您在清单中定义了 default_popup - 您需要将其删除,因为它会干扰您想要捕获的点击事件。

然后,您需要在后台脚本中捕获事件:

chrome.browserAction.onClicked.addListener(function(tab) {
  // ...
});

接下来,如果我们想要一个窗口,我们可能要查看windows APIcreate() 听起来像你需要的:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.windows.create({/* options */});
});

您需要哪些选项?假设你想从你的扩展打开一个页面,你需要一个用 chrome.runtime.getURL 包裹的 URL:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.windows.create({
    // Just use the full URL if you need to open an external page
    url: chrome.runtime.getURL("mypage.html")
  });
});

然后,要显示一个像你正在显示的窗口,没有顶部工具栏,你需要一个窗口类型"popup"

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.windows.create({
    url: chrome.runtime.getURL("mypage.html"),
    type: "popup"
  });
});

最后,如果你想在窗口打开后做一些事情,使用回调:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.windows.create({
    url: chrome.runtime.getURL("mypage.html"),
    type: "popup"
  }, function(win) {
    // win represents the Window object from windows API
    // Do something after opening
  });
});

【讨论】:

  • 清单文件怎么可能?我有这个:{“name”:“Example DOM”,“version”:“1.31”,“manifest_version”:2,“permissions”:[“tabs”],“browser_action”:{“name”:“Example ", "icons": ["icon.png"], "default_icon": "icon.png" }, "content_scripts": [ { "js": [ "jquery.min.js", "background.js" ] , "匹配": [ "http://*/*", "https://*/*"] }] }
  • 我可以在哪里放置事件以捕获点击事件?
  • 非常感谢Xan先生,你真的帮了我,我的解决方案也在这里:developer.chrome.com/extensions/examples/api/tabs/inspector.zip
  • 检查器示例现在生成错误消息。
  • 谢谢。我想打开一个新标签,所以我使用 chrome.tabs.create 而不是 chrome.windows.create :)
【解决方案2】:

background.js

chrome.browserAction.onClicked.addListener(function(activeTab)
{
    chrome.windows.create({ url: chrome.runtime.getURL("popup.html"), type: 
    "popup" });
});

manifest.json

{  
    "manifest_version": 2,  
    "name": "",  
    "description": "",  
    "version": "1.0", 

    "chrome_url_overrides": {
        "newtab": "popup.html" //the html to show in popup
    },

    "browser_action": {
        "default_icon": "img/zi.png" //some icon
    },

    "permissions": [
        "tabs"
    ],

    "background": {
        "scripts": ["background.js"],
        "persistent": false
    }
} 

【讨论】:

  • 您不需要包含“chrome_url_overrides”,它会在 chrome 的每个新选项卡中打开 popup.html。这是不可取的。 Manifest V3 也有各种变化。为了。例如。 “browser.actions”现在只是“actions”等。Google 并没有让开发人员使用 v2 文档与新的 v3 清单更改更容易。它在这里和那里。我希望他们有一个统一的文档,我们可以在同一网站中选择 v2 文档“vs”v3 文档。他们确实有 V3 文档,但我们必须根据与 manifest v2 相比的变化来弄清楚一些东西
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 2012-03-08
  • 1970-01-01
  • 2013-05-10
  • 2013-01-19
  • 2011-03-09
  • 2011-06-12
相关资源
最近更新 更多