Chrome-Erweiterung: Aktuellen Tab aus dem Popup abrufen
Schreibe ich eine Chrome-Erweiterung und in einem Teil davon, die ich brauche, um die aktuelle Registerkarte Titel und URL, wenn Sie eine Taste auf der popup-Seite geklickt wird.
Ich habe mit Chrome message-passing-Systems vor und nach langen Bemühungen geschafft, dass es funktioniert, bei vielen Gelegenheiten. Allerdings habe ich noch nie gehabt, Sie zu benutzen und mit popup-Seiten und, von dem, was ich gelesen habe, ist es viel schwieriger zu machen.
Der timeline habe ich es geschafft, herauszufinden, so weit ist diese:
popup.html
/popup.js
: Schaltfläche geklickt wirdpopup.html
/popup.js
: Anfrage /Nachricht wird gesendet, um den Inhalt SkriptcontentScript.js
: Anfrage /Nachricht empfangen wird, aus dem popup-SeitecontentScript.js
: Der Titel und die URL der aktuellen Registerkarte werden in einer Variablen gespeichertcontentScript.js
: Die 2 Variablen, die gesendet werden, als stringified Antwortpopup.html
/popup.js
: Die 2 Variablen, die analysiert werden, von der Antwort, die
Normalerweise würde ich in der Lage sein, dies herauszufinden, aber ich habe ein paar Dinge, die geworfen einen Schraubenschlüssel in den Werken, wie:
chrome.tabs.getSelected
kann nur verwendet werden, in einem hintergrund-Seite /Skript. Bedeutet das, dass Inhalte, die Skripte nicht brauchen, um überhaupt verwendet werden?- - Nachrichten können nicht gesendet werden, direkt aus dem content-Skript, um die popup-Seite, haben Sie zu gehen über einem hintergrund Seite
- Ein popup-Fenster bestätigt werden, wie die bestehenden, bevor eine Nachricht übergeben werden kann, um es (obwohl, ich glaube, ich weiß, wie dies zu tun)
Habe ich schon gefunden Chrome message-passing-system schwierig genug, aber, das hat vollkommen verwirrt mich. Daher dieser post.
InformationsquelleAutor der Frage mythofechelon | 2012-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
chrome.tabs.getSelected
ist veraltet. Sie verwenden sollten,chrome.tabs.query
statt.chrome.tabs.query
erfordert zwei Parameter: query-Objekt und eine callback-Funktion, die das array der resultierenden Tabletten als parameter.Können Sie die "aktuellen tab", indem Sie eine Abfrage für alle Registerkarten, die zur Zeit aktiv sind und in das aktuelle Fenster.
Da die Abfrage ein Register-array mit den aktuellen Registerkarte alleine, achten Sie darauf, das erste element in der callback -
Et voilà:
InformationsquelleAutor der Antwort fny
Nie Verstand.
Stellt sich heraus, können Sie tatsächlich nutzen
chrome.tabs.getSelected
direkt aus dem popup-Fenster. Jemand hat gelogen.InformationsquelleAutor der Antwort mythofechelon