Google chrome extension 仅允许Chrome扩展的一个活动实例

Google chrome extension 仅允许Chrome扩展的一个活动实例,google-chrome-extension,Google Chrome Extension,我有一个Chrome扩展,每次只需要在每台机器的一个窗口中打开。 实施这一条件的最佳方式是什么?例如,如果存在这样的选项卡,是否有机制将用户指向运行扩展的现有选项卡 我的清单文件的相关部分如下: manifest.json { "manifest_version": 2, "browser_action": { "default_icon": "/img/favicon.ico", "popup": "main.html" },

我有一个Chrome扩展,每次只需要在每台机器的一个窗口中打开。 实施这一条件的最佳方式是什么?例如,如果存在这样的选项卡,是否有机制将用户指向运行扩展的现有选项卡

我的清单文件的相关部分如下:

manifest.json

{

    "manifest_version": 2,

    "browser_action": {
        "default_icon": "/img/favicon.ico",
        "popup": "main.html"
    },

    "background": {
      "scripts": ["open.js"]
    }

}
open.js
的内容如下:

open.js

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.create({'url': chrome.extension.getURL('test.html')}, function(tab) {
  });
});

更新更新后还包括关注不同窗口中的选项卡

因为没有人在这里发布这个问题的答案,所以它是从Rob W的github中获取的,在问题下面的评论中有链接

这是一个更基本的版本,它用打开新选项卡的基本命令替换了原始代码中的openTab()函数

var options_url = chrome.extension.getURL('options.html');
chrome.tabs.query({
    url: options_url
}, function(tabs) {
    if (tabs.length == 0) {
        chrome.tabs.create({ url: "main.html" });
    } else {
        // If there's more than one, close all but the first
        for (var i=1; i<tabs.length; i++)
            chrome.tabs.remove(tabs[i].id);
        // And focus the options page
        chrome.tabs.update(tabs[0].id, {active: true});
        chrome.windows.update(tabs[0].windowId, {focused:true})
    }
});
var options\u url=chrome.extension.getURL('options.html');
chrome.tabs.query({
url:options\uURL
},功能(选项卡){
如果(tabs.length==0){
create({url:main.html});
}否则{
//如果有多个,则关闭除第一个以外的所有

对于(var i=1;我看谢谢!这非常值得一个答案。如果你发布,我会接受它。@RobW感兴趣?否则我会自己发布答案。继续发布答案。