2017-08-30 7 views
1

J'essaie de saisir tous les onglets de la fenêtre en cours et de les parcourir.chrome.tabs.query (objet) ne correspond pas à la définition

actuellement en utilisant le code suivant:

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

Je autorisations pour 'onglets' dans le manifeste.

Il jette l'erreur: « Erreur: Invocation de la forme tabs.query (objet) ne correspond pas à tabs.query définition (objet QueryInfo, rappel de la fonction) à ... »

Je suis confus J'ai clairement l'objet et une fonction de rappel. Je vois aussi ailleurs que cela peut être fait avec une promesse à la place comme:

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

Mais cela renvoie la même erreur. Des idées?

Répondre

3

approche basée promesse est valable uniquement dans Firefox lorsque vous utilisez l'espace de noms browser.* au lieu de chrome.*

Chrome ne fournit pas nativement promesses pour son API, bien que Mozilla has a polyfill si vous préférez.

Votre premier extrait est correct et ne déclenchera pas cette erreur. Assurez-vous de vérifier toutes les invocations de tabs.queryet de recharger correctement l'extension pour que vos modifications s'appliquent.

+0

Merci, il semble que cela fonctionne donc je ne sais pas pourquoi je recevais l'erreur. –