Javascript 关闭左侧的选项卡,同时排除固定的选项卡
我有一个扩展,最初是在清单版本1中创建的。它使用chrome 33中不推荐使用的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
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
来查找活动选项卡(即,您已经拥有了它,为什么不使用它)?