Google chrome extension Chrome扩展:将打开的选项卡与background.js中加载的选项卡匹配

Google chrome extension Chrome扩展:将打开的选项卡与background.js中加载的选项卡匹配,google-chrome-extension,Google Chrome Extension,我有一个Chrome分机。我需要将一个变量传递给打开的选项卡,然后在该选项卡的网页完成加载后使该变量可用。我需要能够唯一地匹配打开的选项卡和加载的选项卡 chrome.browserAction.onClicked.addListener(function(tab) { url = "my_url"; unique_id = "some id"; // I need to pass this on chrome.tabs.create({ url: url }, fun

我有一个Chrome分机。我需要将一个变量传递给打开的选项卡,然后在该选项卡的网页完成加载后使该变量可用。我需要能够唯一地匹配打开的选项卡和加载的选项卡

chrome.browserAction.onClicked.addListener(function(tab) {

    url = "my_url";
    unique_id = "some id"; // I need to pass this on
    chrome.tabs.create({ url: url }, function(tab){});

    // I cannot use any global vars because this function actually loops and opens lots of tabs.

});

// Called when page has finished loading
chrome.webNavigation.onCompleted.addListener(function(tab) {

    if(tab.frameId == 0){ 
       // I need to identify the tab (unique_id) that was created in chrome.browserAction.onClicked.addListener()
       // tab.url won't work because it's different if the orginal url was redirected
    }

});
在浏览器会话中具有唯一的选项卡ID

chrome.browserAction.onClicked.addListener(function(tab) {

    url = "my_url";
    chrome.tabs.create({ url: url }, function(tab){
        unique_id = tab.id; // I need to pass this on
    });

});

// Called when page has finished loading
chrome.webNavigation.onCompleted.addListener(function(details) {

    if(details.frameId == 0){ 
       unique_id = details.tabId;
    }

});

他们的身份证不匹配。第一个tab.id是单击按钮的选项卡的id。第二个tabId是新创建和加载的tab的ID。如果将“unique_ID=tab.ID;”移动到函数(tab){}中,它就会工作。