1

我有一个 Chrome 扩展程序,每次只能在每台机器的一个窗口中打开。执行此条件的最佳方法是什么?例如,如果存在这样的选项卡,是否有一种机制可以将用户指向运行扩展的现有选项卡?

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

清单.json

{

    "manifest_version": 2,

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

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

}

内容如下open.js

打开.js

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

1 回答 1

3

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

由于没有人在此处发布此问题的答案,因此取自 Rob W 的 github,链接在问题https://github.com/Rob--W/stackexchange-notifications/blob/8947b9982cd7b9e04ccf0ef23510571f39d33c4e/Chrome/using下的评论中-websocket.js#L66-L82

这是一个更基本的版本,将原始代码中的 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})
    }
});
于 2014-02-24T01:55:55.640 回答