关闭Chrome扩展程序中的标签页

时间:2014-12-19 22:25:45

标签: javascript google-chrome-extension tabs

我在popup.html中调用了一个函数来创建一个标签,插入一个mailto来触发本地(或gmail)邮件事件。我希望它能够自行关闭。我尝试了很多东西,但似乎我需要的东西相当于:

tabId = chrome.tabs.query(I DON'T KNOW!);
chrome.tabs.remove(tabId);

这是当前的代码:

var query = { active: true, currentWindow: true };
function callback(tabs) {
    var currentTab = tabs[0];
    console.log(currentTab);
}
chrome.tabs.remove(chrome.tabs.query(query, callback));

但它不起作用。

如果有用,请按照以下方式创建标签(按预期工作):

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
        getTabs(tabs, function(full_mail_link){
          chrome.tabs.create({ url: full_mail_link });
        });
    });

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:6)

我不知道你的getTabs功能是做什么的。但是,如果您知道如何找到所需标签的标签ID,那么您需要做的就是

chrome.tabs.remove(tabId, optionalCallback);

答案 1 :(得分:1)

这一定是有效的:

chrome.tabs.getSelected(null, function(tab) {
 chrome.tabs.remove(tab.id);
 });

答案 2 :(得分:-1)

这应该有效:

//create the tab
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    getTabs(tabs, function(full_mail_link){
      chrome.tabs.create({ url: full_mail_link }, callBackOnCreate);
    });
});

function callBackOnCreate(tab)
{
     globalCreatedTab = tab.id;
}

chrome.tabs.query({'active': true}, function(tabs) {
      for (var i = 0; i < tabs.length; ++i)
      {
          if (tabs[i].id === globalCreatedTab)
          {
              chrome.tabs.remove(tabs[i].id, [optional callback]);
          }
      }

 });

解决方案:将查询函数与回调一起使用,并在回调中执行remove函数。

看起来正常window.openwindow.close()也应该有效, tab-id是一个整数或包含整数的数组。