Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chrome扩展-Javascript_Javascript - Fatal编程技术网

Chrome扩展-Javascript

Chrome扩展-Javascript,javascript,Javascript,我试图使它,使我的按钮可能只打开一个实例,我的网页在同一时间,但它拒绝工作。我正在调试过程中,我的印象是,如果我关闭使用我的按钮打开的选项卡,两个警报应打印相同的编号,即唯一的选项卡id no?。他们没有。这是我的密码 var isOpen = false; var myTabId = null; chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){ if (isOpen == true) {

我试图使它,使我的按钮可能只打开一个实例,我的网页在同一时间,但它拒绝工作。我正在调试过程中,我的印象是,如果我关闭使用我的按钮打开的选项卡,两个警报应打印相同的编号,即唯一的选项卡id no?。他们没有。这是我的密码

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

    }
});

提前感谢。

我认为这里的问题是您在myTabId中存储了不正确的选项卡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);
        });
    }
});