1

我做了一个简单的扩展,我希望我当前的标签被重新定位到一个新的位置,但是这段代码对我不起作用:

function redirect() {
    console.log("HELLO"); 
    chrome.tabs.getSelected(null, function(tab) {
        var currentURL = tab.url;
        if(currentURL == "http://example.site/"){
            chrome.tabs.create("http://newlocation.site/",tab);
            alert("redirected");
        }
    });
}

chrome.browserAction.onClicked.addListener(redirect);

无论如何,我无法通过谷歌搜索有关选定选项卡的属性的信息。有没有tab.url类似“命令”的?我的意思是,tab.reload() .. 等等...

4

1 回答 1

1

修复当前代码后,当当前选项卡与给定 URL 匹配时,将创建一个新选项卡。

  1. chrome.tabs.create(object createInfo, function callback)是正确的签名。
  2. 注意:chrome.tabs.getSelected 不赞成使用chrome.tabs.query.

    chrome.tabs.create({url: "http://newlocation.site/"});
    

此代码按预期工作(后台脚本):

function redirect() {
    console.log("Querying...");
    chrome.tabs.query({active: true}, function(tabArray) {
        var currentURL = tabArray[0].url;
        // For debugging purposes:
        console.log(currentURL);
        if (currentURL == "http://example.site/") {
            // The next line is the important change
            chrome.tabs.create({url: "http://newlocation.site/"});
            alert("redirected");
        }
    });
}
chrome.browserAction.onClicked.addListener(redirect);

如果您不想创建新选项卡,但要更改当前选项卡的 URL,请使用update代替create

chrome.tabs.update(tabArray[0].id, {url: "http://newlocation.site/"});

文档

于 2012-04-08T13:58:14.280 回答