Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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
Javascript 关闭Chrome扩展中的选项卡_Javascript_Google Chrome Extension_Tabs - Fatal编程技术网

Javascript 关闭Chrome扩展中的选项卡

Javascript 关闭Chrome扩展中的选项卡,javascript,google-chrome-extension,tabs,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) {

我有一个在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));
但它不起作用

如果有用的话,下面是我如何创建选项卡(它可以根据需要工作):

任何帮助都将不胜感激

这应该有效:

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

 });
//创建选项卡
chrome.tabs.query({active:true,currentWindow:true},函数(tabs){
getTabs(选项卡、函数(完整邮件链接){
create({url:full\u mail\u link},callBackOnCreate);
});
});
函数callBackOnCreate(选项卡)
{
globalCreatedTab=tab.id;
}
chrome.tabs.query({'active':true},函数(tabs){
对于(变量i=0;i
解决方案:将查询函数与回调一起使用,并在回调中执行remove函数

它看起来像正常的
窗口。open
窗口。close()
也应该可以工作,
选项卡id是整数或包含整数的数组

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

chrome.tabs.remove(tabId, optionalCallback);
这项工作必须:

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

谢谢,但根据google的说法,getSelected已被弃用,我们现在应该使用query…为什么要在active tabs数组中选择第一个?(提示:这是一个提示您的代码不健壮)我的意思是,如果打开多个窗口,您的代码将异常工作。OP现在想知道为什么他的代码不工作。删除代码需要在查询回调中。如果您想要ID为的选项卡数组。当然,您可以执行其他编码来检查选项卡是否是您创建的选项卡。将更新。@Mouser谢谢-很抱歉打扰您,但是您有循环数组如何工作的示例吗?Close iself=关闭弹出窗口?关闭您打开的选项卡?两者都有?谢谢-问题是我一开始就不知道如何得到tabId。。。当前的任何提示:`chrome.tabs.query({currentWindow:true,active:true},函数(tabs){tabId=tabs[0].id//tabs是一个tabs数组})
chrome.tabs.getSelected(null, function(tab) {
 chrome.tabs.remove(tab.id);
 });