开发者问题收集

chrome.tabs.query(对象)与定义不匹配

2017-08-30
7277

我试图抓取当前窗口的所有选项卡并循环遍历它们。

当前使用代码:

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

我拥有清单中“tabs”的权限。

它抛出了错误:“错误:表单 tabs.query(object) 的调用与定义 tabs.query(object queryInfo, function callback) 不匹配...”

我很困惑,因为我显然有对象和回调函数。我还在其他地方看到可以用承诺来完成:

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

但这会引发相同的错误。有什么想法吗?

1个回答

基于 Promise 的方法仅在 Firefox 中使用 browser.* 命名空间而不是 chrome.* 时才有效。

Chrome 本身不为其 API 提供 Promises,但 Mozilla 有一个 polyfill (如果您愿意)。

您的第一个代码片段是正确的,不会抛出此错误。请确保检查所有 tabs.query 调用 并正确重新加载扩展 以应用您的更改。

Xan
2017-08-30