2017-08-30 39 views
1

我試圖抓住當前窗口的所有選項卡,並通過它們循環。chrome.tabs.query(object)不匹配定義

目前正在使用的代碼:

chrome.tabs.query({currentWindow: true}, function(result) { 
    result.forEach(function(tab) { 
     do stuff here; 
    }); 
}); 

我對清單中的 '標籤' 的權限。

它引發錯誤:「錯誤:形式tabs.query的調用(對象)不匹配定義tabs.query在(對象queryInfo,回調函數)......」

我很困惑,我明顯有對象和回調函數。我也在其他地方看到,它可以用承諾來代替:

var query = chrome.tabs.query({currentWindow: true}); 
query.then(function(tabs) { 
    tabs.forEach(function(tab) { 
     do stuff here; 
    }); 
}); 

但是,這會引發同樣的錯誤。有任何想法嗎?使用browser.*命名空間,而不是chrome.*

Chrome時,本身不爲它的API提供的承諾,但Mozilla的has a polyfill如果你喜歡的

回答

3

基於承諾的方法是隻在Firefox中有效。

您的第一個片段是正確的,不會拋出此錯誤。請確保您檢查了tabs.query的所有調用,並正確地重新加載分機以適用您的更改。

+0

謝謝,它似乎正在工作,所以不知道爲什麼我得到錯誤。 –