更改活动窗口(Chrome.tabs)



我已经为pandora.com进行了扩展,当用户单击扩展图标时,它将使用Pandora打开一个新标签。

当Pandora在新选项卡中已经打开并且用户单击扩展名时,扩展程序将不会打开新选项卡,但我希望它可以使用Pandora已打开的"活动"选项卡。

这是我到background页面上到目前为止所拥有的:

chrome.browserAction.onClicked.addListener(function(tab) {
    var found = false;
    chrome.tabs.query({}, function (tabs) {
        for (var i = 0; i < tabs.length; i++) {
            if (tabs[i].url.search("pandora.com") > -1){
                found= true; 
            }
        }
        if (found==false){
            chrome.tabs.executeScript(null,{file: "buy.js"});
        } else {
             // Changes active tab to the tab with pandora open
        }
    });
});

update- chrome.tabs.update(tabId, {selected: true});实现了我所需的东西。这是最终代码:

chrome.browserAction.onClicked.addListener(function(tab) {
    var found = false;
    var tabId;
    chrome.tabs.query({}, function (tabs) {
        for (var i = 0; i < tabs.length; i++) {
            if (tabs[i].url.search("www.pandora.com/") > -1){
                found = true;
                tabId = tabs[i].id;
            }
        }
        if (found == false){
            chrome.tabs.executeScript(null,{file: "buy.js"});
        } else {
            chrome.tabs.update(tabId, {selected: true});
        }
    });
});

似乎已经弃用了chrome.tabs.update的第二个参数的 selected属性。

使用active属性是这样做的新方法:

chrome.tabs.update(tabId, {active: true})

如果要激活的选项卡在另一个窗口中,您还需要使用chrome.windows.update将活动窗口更改为该窗口:

chrome.windows.update(windowId, {focused: true}, (window) => {
  chrome.tabs.update(tabId, {active: true})
})

最新更新