2011-11-11 6 views
2

Je suis en train de faire une extension pour Google Chrome qui nécessite que je puisse identifier l'onglet actuellement sélectionné. J'ai fait ceci avec la méthode de chrome.tabs.onSelectionChanged, cependant quand je change des fenêtres ceci n'est pas tiré. Je prévois d'utiliser chrome.windows.onFocusChanged pour détecter quand la fenêtre change, puis utiliser la méthode chrome.tabs.getSelected. Cependant, le problème est que chrome.windows.onFocusChanged semble être déclenché plus d'une fois. Si je ne me trompe pas, elle renvoie la fenêtre -1, puis la première fenêtre créée (généralement 1), puis la fenêtre courante. Si la première fenêtre est sélectionnée, elle se déclenche -1, puis 1.Chrome Extension - Comportement Chrome.windows.onFocusChanged

Est-ce que j'utilise la bonne méthode ici? Existe-t-il une meilleure façon de le faire? Si je m'en tiens à cela, je pourrais avoir besoin de garder une trace de la façon dont la fenêtre change, ce qui est un peu brouillon.

+0

Paul, merci pour l'info! Souhaitez-vous s'il vous plaît déplacer votre section "Edité" à une réponse et auto-accepter une fois que le système vous le permettra? Très appréciée! – cxw

+1

Bonne idée @cxw. Fait, et merci! – Paul

Répondre

1

Kinda a travaillé sur ma propre solution pour cela. Pour toute personne intéressée à faire quelque chose de similaire, j'ai plutôt utilisé l'onFocusChanged comme indicateur qu'un changement de fenêtre se produisait, puis un queryListener. En utilisant des scripts de contenu, j'ai envoyé une requête à l'extension à chaque fois qu'il y avait un événement window.focus indiquant que le focus était déjà sur cette fenêtre. Le requestlistener se retire alors tout seul. Malheureusement, cette approche nécessite que tous les onglets envoient des requêtes chaque fois qu'ils obtiennent un focus. Un peu plus de réglages pour corriger cela, mais pour le moment, je pense que cela suffit à envoyer des demandes chaque fois qu'il y a un changement d'orientation ne semble pas manger autant de ressources.