8
votes

Est-il possible de déterminer l'ouvre-tabulation dans une extension Google Chrome?

Je cherche un moyen de déterminer un ouvre-onglet d'une onglet (onglet parent) dans une extension de Google Chrome.

J'ai regardé la documentation pour l'onglet, mais il ne semble pas vraiment y avoir rien qui céderait cette information. http://code.google.com/chrome/extensions/tabs.html p>

J'ai essayé d'injecter ce script de contenu dans les pages (pensez que je pourrais passer la valeur à ma page d'arrière-plan): P>

alert(window.opener);


1 commentaires

Puis-je vous demander quel type d'extension êtes-vous / étiez-vous en train de construire? Je cherche un très simple qui aurait très simplement cette fonctionnalité exacte tout simplement: chaque fois que je suis en doutement de «d'où je viens de» ou de ce qui a ouvert ce qui a ouvert ce que j'aimerais connaître le parent de l'onglet actuel. Votre poste peut-il répondre à cette question de répondre à cette question? Ou même si non, vous connaissez peut-être une extension similaire?


4 Réponses :


2
votes

Chrome a ajouté une API d'extension expérimentale qui peut accomplir ceci - spécifiquement webnavigation.onbeforerétarget. http://code.google.com/chrome/extensions/experimental.webnavigation.html

Cependant, étant donné que cela reste expérimental (non utilisable dans des versions stables chromées ou libérable sur le magasin Web Chrome), j'ai fini par utiliser une autre approche.

essentiellement: < p> in content_script.js: xxx

en arrière-plan.html: xxx

Cette approche me permet d'obtenir le < Fort> référent d'un onglet, que je peux ensuite corréler avec une URL d'une onglet existante. Ce n'est toujours pas une mappage unique, donc je fais une magie supplémentaire de sorte que préférant l'onglet actuellement sélectionné en tant qu'observateur si son URL correspond au référent de l'onglet Nouveau.

Ceci est vraiment un hack pour se rapprocher de la fonctionnalité qui serait fournie plus simplement et avec précision par webnavigation.onbeforerétarget ou window.Opener.


0 commentaires

7
votes

Mise à jour: Il est maintenant possible de déterminer de manière fiable un onglet d'ouverture d'une onglet dans une extension chromée à l'aide de l'API de nibémation nouvellement ajoutée et spécifiquement en accrochant l'événement ONCAREDEDNAVIGATIONTAVIGATION.

https://code.google.com/chrome/extensions/trunk/ webnavigation.html


0 commentaires

1
votes

Une autre enquête a révélé que OncreatednavigationTarget () n'est pas toujours le feu lorsque vous pensez indiquer une relation ouverte ouverte.

Un indice supplémentaire peut parfois être trouvé dans l'objet de l'onglet renvoyé par chrome.Tabs.onCreated / OneUpdated dans le paramètre .Openertabid.

Une solution globale devra probablement s'appuyer sur plusieurs méthodes décrites dans ces réponses.


0 commentaires

1
votes
port.onMessage.addListener(
     function(msg) {
         var tabid = port.sender.tab.openerTabId;
         console.log("Received message from tab that was opened by tab id : " + tabid);
         // reliably shows the tab id of the tab that opened
         // the tab sending the message
     }); 

0 commentaires