更改活动窗口(chrome.tabs)

时间:2014-03-09 18:48:16

标签: javascript google-chrome google-chrome-extension 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
        }
    });
});

2 个答案:

答案 0 :(得分:0)

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});
        }
    });
});

答案 1 :(得分:0)

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

使用 active 属性是一种新的方法:

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

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

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