Ich schreibe eine Google Chrome-Erweiterung mit einem Popup und einer Hintergrundseite. Das Popup abonniert bestimmte Ereignisse, die der Hintergrund erzeugt, und ich möchte mich von diesen Ereignissen abmelden, wenn das Popup verschwindet. Ich sehe jedoch keine onbeforeunload- oder onunload-Ereignisse, die aus dem Popup generiert werden. Werden diese Ereignisse ausgelöst? Wenn nicht, irgendwelche Ideen, wie Popup zu schließen?Wird onbeforeunload Event-Trigger für popup.html in einer Google Chrome-Erweiterung?
Antwort
Ich hatte eine Art ähnliches Problem. In meinem Fall habe ich den Fokus auf ein Element gesetzt, das in der Popup-Seite war. Also, wenn das Popup geschlossen ist, verliert das Element den Fokus und ich kann das Blur-Ereignis abfangen.
Dieser Trick funktioniert nicht für mich - war wirklich hoffnungsvoll - aber nein. –
"beforeunload" ist nicht gefeuert für Browser Action Popups. Glaub mir, ich habe es versucht. "Entladen" sollte jedoch korrekt abgefeuert werden, hören Sie also zu.
Eigentlich habe ich ein ähnliches System an Ort und Stelle, die Sie Ereignisse mit addEventListener anhängen können, und sie werden automatisch aufgeräumt, wenn das Entladen Ereignis ausgelöst wird.
Hier ist ein kleiner Tipp: Natürlich können Sie console.log
nicht verwenden, denn wenn das Entladeereignis ausgelöst wird, ist es bereits zu spät. Aber, können Sie dies tun:
var background = chrome.extension.getBackgroundPage();
addEventListener("unload", function (event) {
background.console.log(event.type);
}, true);
Durch den obigen Code verwenden, können Sie die Hintergrundseite der Konsole öffnen, die zeigen sollen, dass das Unload-Ereignis korrekt ausgelöst wird.
Danke für die Hintergrundkonsole Tipp! Ziemlich nützlich! –
@AlexStack Ich habe Ihre Bearbeitung rückgängig gemacht. 'chrome.runtime.getBackgroundPage' ist nicht äquivalent - es ist asynchron. – Xan
Zumindest mit einer Event-Seite und der Verwendung von 'chrome.runtime.getBackgroundPage()', um einen Aufruf an die Hintergrundseite zu machen, um etwas zu loggen, sehe ich das nicht zum 'Entladen' von Ereignissen. – jdunning
Wenn Sie anstelle der Hintergrundseiten in Ihrer Nebenstelle auf geschaltet haben, ruft die empfohlene Methode zum Zugriff darauf chrome.runtime.getBackgroundPage()
mit einer Funktion auf, die mit der Hintergrundseitenreferenz aufgerufen wird.
Wenn Sie jedoch versuchen, die Hintergrundseite in einem onbeforeunload
Handler zu bekommen, wie folgt aus:
document.addEventListener("beforeunload", function() {
chrome.runtime.getBackgroundPage(function(backgroundPage) {
backgroundPage.log("unloading");
});
});
Der Rückruf scheint nicht zu schießen, bevor die Seite entladen wird, so dass log()
Anruf nie gemacht wird.
In einem Kommentar oben schlug Pauan vor, chrome.extension.getBackgroundPage()
zu verwenden, um die Seite zu erhalten. Der einzige Weg, wie ich das erreichen konnte, war nicht den Handler mit addEventListener()
zu erstellen. Stattdessen hatte ich alte Schule zu gehen und den Handler direkt auf window
gesetzt:
window.onbeforeunload = function() {
chrome.extension.getBackgroundPage().log("unloading");
};
die schließlich durch Seite in den Hintergrund bekam.
- 1. Bedingung in einem EventTrigger
- 2. FlipView EventTrigger für das SelectionChanged-Ereignis
- 3. Eventtrigger nicht für Loaded-Ereignis des Usercontrol
- 4. schwimmend popup.html div
- 5. Gibt es eine Liste für EventTrigger EventNames?
- 6. WPF freigegeben EventTrigger
- 7. Clear Onbeforeunload
- 8. Angular2 onbeforeunload
- 9. Individuelle RoutedEvent als Eventtrigger
- 10. Unity 3D Google Cardboard (VR) Blickfunktionen ohne EventTrigger
- 11. onbeforeunload in Opera
- 12. Wie programm öffnet Chrome-Erweiterung popup.html
- 13. Verhindern onbeforeunload-Dialoge in IE9
- 14. beforeunload Oder onbeforeunload
- 15. Warnung nicht in popup.html der Chrome-Erweiterung
- 16. Jquery Hilfe benötigt für onbeforeunload Ereignis
- 17. Speichern von Benutzereinstellungen in popup.html Chrome-Erweiterung
- 18. In Rails, onbeforeunload funktioniert nicht konsistent für Chrome-Browser
- 19. Onbeforeunload nicht richtig für Chrome arbeiten
- 20. onbeforeunload Problem in IE-Browser
- 21. Javascript onbeforeunload Problem
- 22. onbeforeunload Unterstützung Erkennung
- 23. Chrome Erweiterung: popup.html dynamisch erstellen über contentscript.js
- 24. jQuery UI Dialog OnBeforeUnload
- 25. Unterdrückungsbestätigungsdialog während onbeforeunload
- 26. Javascript und onbeforeunload?
- 27. onbeforeunload Navigation mit location.href
- 28. Javascript, ein onbeforeunload-Tag steuern
- 29. Gibt es eine Möglichkeit, Setter-Elemente in EventTrigger zu platzieren?
- 30. Onbeforeunload nicht bei allen
Ich habe diese genaue Frage. Hast du jemals eine Antwort gefunden? –