Tut onbeforeunload-Ereignis-trigger für popup.html in einem google-chrome-Erweiterung?
Schreibe ich eine google chrome-Erweiterung mit einem popup und einem hintergrund-Seite. Das popup-abonniert, um auf bestimmte Ereignisse, die den hintergrund erzeugt, und ich würde gerne den Newsletter abbestellen, diese Ereignisse, wenn das popup Weg geht. Allerdings sehe ich nicht ein, entweder der onbeforeunload-oder onunload-Ereignisse generiert wird, aus dem popup-Menü. Sind diese events werden ausgelöst? Wenn nicht, irgendwelche Ideen auf, wie zu erfassen popup schließen?
- Ich habe diese genaue Frage. Hast du jemals eine Antwort finden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
"beforeunload" ist nicht gefeuert für browser-action-pop-UPS. Glauben Sie mir, ich habe es versucht. "entladen" sollte gefeuert werden, richtig, aber, so hören, dass.
Tatsächlich, ich habe ein ähnliches system, das ermöglicht das Anhängen von events mit addEventListener, und Sie werden automatisch gereinigt, wenn das unload-Ereignis ausgelöst.
Hier ein kleiner Tipp: man kann natürlich nicht verwenden
console.log
, weil durch die Zeit, die das unload-Ereignis ausgelöst wird, ist es bereits zu spät. Aber, Sie können dies tun:Mithilfe der obigen code, können Sie Sie öffnen, bis der hintergrund der Seite die Konsole, die zeigen sollte, dass das unload-Ereignis ausgelöst wird, richtig.
chrome.runtime.getBackgroundPage
ist nicht gleichwertig, es ist asynchron.chrome.runtime.getBackgroundPage()
um einen Anruf zu tätigen, um den hintergrund der Seite anmelden, die etwas, was ich nicht sehen, diese Arbeit fürunload
Veranstaltungen.chrome.runtime.getBackgroundPage
Funktion, aber es könnte nicht funktionieren.chrome.extension.getBackgroundPage()
Funktion.window
, wie beschrieben in meiner Antwort weiter unten.Habe ich eine Art von ähnlichen Problem.
In meinem Fall habe ich den Fokus auf ein element, das in der popup-Seite.
Also, wenn das popup geschlossen ist, wird das element verliert den Fokus und ich fangen kann der blur-event.
Wenn Sie gewechselt haben, um mit event-Seiten anstelle der hintergrund-Seiten in Ihrer Erweiterung, der empfohlene Weg, um Zugang zu ihm ruft
chrome.runtime.getBackgroundPage()
mit einer Funktion, die aufgerufen wird, wieder mit dem hintergrund der Seite Referenz.Jedoch, wenn Sie versuchen, den hintergrund der Seite in einer
onbeforeunload
handler, wie diese:Den Rückruf nicht scheinen, um das Feuer, bevor die Seite entlädt, so dass
log()
Anruf nie gemacht.In einem Kommentar oben, Pauan schlug
chrome.extension.getBackgroundPage()
an die Seite bekommen. Die einzige Möglichkeit, die ich bekommen konnte, dass die Arbeit war nicht zu schaffen, der hf mitaddEventListener()
. Stattdessen musste ich gehen der alten Schule und setzen die handler direkt aufwindow
:Dass endlich durch den hintergrund der Seite.