Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 关闭左侧的选项卡,同时排除固定的选项卡_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 关闭左侧的选项卡,同时排除固定的选项卡

Javascript 关闭左侧的选项卡,同时排除固定的选项卡,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我有一个扩展,最初是在清单版本1中创建的。它使用chrome 33中不推荐使用的chrome.tabs.getSelected和chrome.tabs.getAllInWindow。我们现在实际上使用的是Chrome54,所以我想让它更新一点。清单中的当前权限是选项卡。我听说这可能与异步有关 现有的扩展是一个按钮,用于关闭选定或活动选项卡左侧的所有选项卡 函数closeLeftTabs(){ 瓦尔·科塔布; chrome.tabs.getSelected(null,函数(tab){ curTab

我有一个扩展,最初是在清单版本1中创建的。它使用chrome 33中不推荐使用的
chrome.tabs.getSelected
chrome.tabs.getAllInWindow
。我们现在实际上使用的是Chrome54,所以我想让它更新一点。清单中的当前权限是
选项卡
。我听说这可能与异步有关

现有的扩展是一个按钮,用于关闭选定或活动选项卡左侧的所有选项卡

函数closeLeftTabs(){
瓦尔·科塔布;
chrome.tabs.getSelected(null,函数(tab){
curTab=tab;
});
chrome.tabs.getAllInWindow(空,函数(制表符){
对于(变量i=0;i如果使用(制表符[i]。索引来获取当前活动的制表符“active”属性。以下是工作代码

chrome.browserAction.onClicked.addListener(function(tab) {  
   closeLeftTabs();
});


function closeLeftTabs() {

  performActionOnCurrentTab(function(activeTab){
     if(activeTab) {
        chrome.tabs.query({currentWindow : true,pinned: false},function(tabs) {
             for (var i = 0; i < tabs.length; i++) {
                 if (tabs[i].index < activeTab.index){
                     chrome.tabs.remove(tabs[i].id, null);
                 }
             }
         });
     }
 });


}

function performActionOnCurrentTab(tabCallback) {
   chrome.tabs.query({ currentWindow : true, active : true },function (tabArray) { tabCallback(tabArray[0]); });
}
chrome.browserAction.onClicked.addListener(函数(选项卡){
closeLeftTabs();
});
函数closeLeftTabs(){
PerformanceOnCurrentTab(函数(activeTab){
如果(活动选项卡){
查询({currentWindow:true,pinted:false},函数(tabs){
对于(变量i=0;i
chrome.tabs.query是异步的,因为所有带有回调的chrome API在执行下一条语句时都未定义
curTab
。请参阅不要忘记,使用内置devtools调试器,通过在函数内设置断点,可以在几秒钟内捕捉到此类错误。问题中可能存在的代码重复在突出显示的
选项卡上,而不是活动选项卡上(不清楚这是否是OP有意选择的UI)。对于您的侦听器,为什么要在匿名函数中包装
closeLeftTabs()
(您可以直接使用它)?当您已经在
chrome.browserAction.onclick
处理程序中传递了活动选项卡的属性时,为什么要执行
chrome.tabs.query
来查找活动选项卡(即,您已经拥有了它,为什么不使用它)?