2011-11-11 4 views
2

J'ai une extension chrome qui envoie un message du script de contenu à la page d'arrière-plan et enregistre le tab_id du script de contenu. J'ai remarqué que sur google.com | de | à deux messages sont enregistrés, deux scripts de contenu sont créés: un pour la page Web affichée dans l'onglet (par exemple https://www.google.com/search?q=python+standard+library) et un autre script de contenu pour le premier élément de la liste google (dans l'exemple ci-dessus http://docs.python.org/library/)Onglets cachés dans les extensions google chrome

Encore plus étrange - le tab_id du deuxième script de contenu (le caché) n'est pas valide. C'est à dire. chrome.pageAction.hide (tab_id) provoque l'erreur suivante apparaît:

Erreur lors pageAction.hide: Aucun onglet avec id: 71

est-il un moyen de savoir si un script de contenu appartient à une " onglet "caché"?

merci, Peter

Répondre

1

Tout d'abord, vous pouvez utiliser onCreated et/ou onUpdated de garder une trace des onglets et applications d'URL sans la nécessité d'un script de contenu. Cependant, si votre script de contenu ne se contente pas d'informer la page d'arrière-plan de l'ID de l'onglet, cela peut signifier plus de vérification.

Si votre script de contenu est exécuté sur all_frames, vous recevrez des messages du script de contenu dans la fenêtre supérieure et tous les cadres internes. Pourtant, lorsque je teste un exemple d'implémentation, j'obtiens les mêmes ID pour chacun d'entre eux. De plus, aucun d'entre eux ne semble provenir d'entrées de la liste des résultats de recherche.

Si vous exécutez le script dans tous les onglets, vous pouvez vous assurer que seule la fenêtre supérieure envoie le message en enveloppant votre appel sendRequest avec un if (window.top === window).

Est-il possible que vous ayez une autre extension exécutant les aperçus de résultats Google? Cela peut avoir cet effet ....

Questions connexes