evilmoe
Goto Top

Chrome Extension popup click in background abfangen

Hallo,


Ich arbeite gerade an einer Chrome Erweiterung. Ich habe da ein Problem mit dem Popup (wenn man auf das Icon der Erweiterung klickt). Dort habe ich einen Link der ein Screenshot automatisch erstellt und hochlädt.
Das funktioniert auch, leider nur wenn man das Popup auch auf lässt. Schließe ich es direkt da nach (einfacher klick woanders) wird das Script einfach beendet.

Gibt es eine Möglichkeit das ich den click auf den Link im Popup anders abfangen kann, um ihn z.B. in der background.js zu verarbeiten?


Gruß
Sven

Content-ID: 259421

Url: https://administrator.de/contentid/259421

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

114757
114757 10.01.2015 aktualisiert um 14:49:31 Uhr
Goto Top
Moin,
mach es doch ohne Popup dann kannst du den Click auf das Icon der Erweiterung (browserAction) über die im Callback-Parameter definierten Funktion des Events verarbeiten und deinen Link dann via JavaScript aufrufen:
https://developer.chrome.com/extensions/browserAction#event-onClicked

Hinweis: Es darf kein Popup definiert sein damit du das Event abonnieren kannst.

Gruß jodel32
EvilMoe
EvilMoe 10.01.2015 um 14:50:56 Uhr
Goto Top
Hallo,

Leider ist das nicht möglich. Es gibt im Popup mehrere Links mit unterschiedlichen Funktionen.


Sven
114757
Lösung 114757 10.01.2015 aktualisiert um 15:22:01 Uhr
Goto Top
Würde es dir denn was nutzen wenn du eine Funktion aus der Popup-Datei in der background.js triggerst wenn du auf den Link klickst ?
Das geht über Message Passing

Hier ein Beispiel:
http://stackoverflow.com/questions/5443202/call-a-function-in-backgroun ...
EvilMoe
EvilMoe 10.01.2015 um 15:21:57 Uhr
Goto Top
Genau das schaue ich mir gerade.

Funktioniert zumindest so wie ich es wollte, ob s so auch sauber ist, kann ich nicht beurteilen (erste Chrome Erweiterung).
Aber das hat mir auf jeden Fall ein Problem gelöst ;)

Danke!
114757
114757 10.01.2015 aktualisiert um 15:37:35 Uhr
Goto Top
ob s so auch sauber ist, kann ich nicht beurteilen
Das ist gängige Praxis bei Popups die Funktionen aufrufen müssen die das Schließen des Popups überleben müssen. Also keine unnötigen Gedanken machen face-smile

Freut mich das ich helfen konnte.
Gruß jodel32
EvilMoe
EvilMoe 10.01.2015 aktualisiert um 15:59:37 Uhr
Goto Top
Eine Frage dies bezüglich hätte ich noch. Ich möchte 2 Request nacheinander schicken, leider kommt nur die erste an. Ich finde zwar ein paar Sachen dazu, aber leider hilft das nicht bei mir.
Bsp.:

chrome.extension.sendRequest({ action: "DoUpload", image: url });  
chrome.extension.sendRequest({ action: "notification", msg: "Uploading..." });  


EDIT: Etwas genauer: Ich sende beim klicken eines Links auf der popup einen sendRequest die in der background eine Funktion aufruft. Diese Funktion soll nun ein weiteren Request senden können (notification).
114757
114757 11.01.2015 aktualisiert um 09:52:48 Uhr
Goto Top
Zitat von @EvilMoe:

EDIT: Etwas genauer: Ich sende beim klicken eines Links auf der popup einen sendRequest die in der background eine Funktion aufruft.
OK
Diese Funktion soll nun ein weiteren Request senden können (notification).

Warum rufst du die Funktion in der background.js dann nicht einfach erneut auf ?? Bzw. in welche Richtung soll dieser Request gesendet werden, an den Popup ?

Im obigen Link zu Message Passing kannst du nachlesen das es eine Callback-Funktion gibt über die du Responses der anderen Seite verarbeiten kannst. Somit kannst du das Popup über den Status informieren. Stichwort: sendResponse()
EvilMoe
EvilMoe 11.01.2015 um 11:39:27 Uhr
Goto Top
Das brauchte ich doch gar nicht. Es funktionierte einfach nicht (Notifikation erschien nicht), daher dachte ich das es nicht in ein backgroundscript laufen darf.

Gibt es eine Möglichkeit eine Rich Notification länger offen zu lassen? Es gibt zwar "eventTime" (zb. eventTime: (Date.now() + 30000)), dennoch schließt sich das nach einigen Sekunden.