2014-12-19 229 views
2

我有一个在popup.html中调用的函数,它创建一个选项卡,插入一个mailto来触发本地(或Gmail)邮件事件。这是我的愿望,然后关闭自己。我试过很多东西,但好像我需要的东西,不等价的:Chrome扩展中的关闭选项卡

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

任何帮助,将不胜感激!

+0

关闭iself =关闭弹出?关闭你打开的标签?都? – Xan

回答

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

}); 

解决方法:使用查询功能与回调和回调执行删除功能。

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

+0

感谢,但根据谷歌getSelected已被弃用,我们现在应该使用查询... –

+0

找到答案,我会更新我自己的代码 – Mouser

+0

为什么你选择活动标签数组中的第一个? (提示:这是暗示你的代码不健全) – Xan

5

我不知道你的getTabs函数做了什么。然而,如果你知道如何找到你想要的一切,你需要做的标签的标签ID是

chrome.tabs.remove(tabId, optionalCallback); 
+1

谢谢 - 问题是我无法弄清楚如何让tabId在第一位...任何提示?当前的' –

+0

:'chrome.tabs.query({currentWindow:true,active:true},function(tabs){tabId = tabs [0] .id // tabs是一组选项卡}) –

1

这一定是工作:

chrome.tabs.getSelected(null, function(tab) { 
chrome.tabs.remove(tab.id); 
}); 
相关问题