1

我正在努力做到这一点,这样我的按钮一次只能打开我的网页的一个实例,但它拒绝工作。我正在调试过程中,如果我关闭使用按钮打开的选项卡,我的印象是,两个警报都应该打印相同的数字(选项卡 ID(这是唯一的吗?))。他们没有。这是我的代码..

var isOpen = false;
var myTabId = null;

chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){
    if (isOpen == true)
    {
        alert(myTabId);
        alert(tabId);

    }
});

chrome.browserAction.onClicked.addListener(function (tab) {
    if (isOpen == false)
    {
        chrome.tabs.create({'url': "./selectpage.html"});
        isOpen = true;
        myTabId = tab.id;

        alert("new tab "+tab.id);

    }
});

提前致谢。

4

1 回答 1

0

我相信这里的问题是您在 myTabId 中存储了不正确的 Tab id。在 onClicked 回调中,您被传递了对单击扩展图标时处于活动状态的选项卡的引用 - 而不是您正在打开的新选项卡作为响应。

您应该做的是在创建新选项卡时添加一个回调,并存储对其 id 的引用:

var isOpen = false;
var myTabId = null;

chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){
    if (isOpen == true)
    {
        alert(myTabId);
        alert(tabId);

    }
});    

chrome.browserAction.onClicked.addListener(function (userTab) {
    if (isOpen == false)
    {
        chrome.tabs.create({'url': "./selectpage.html"}, function(myTab){
            isOpen = true;
            myTabId = myTab.id;

            alert("new tab "+myTabId);
        });
    }
});
于 2013-09-22T22:58:48.307 回答