Je souhaite déclencher du code lorsque l'action de la page ou la fenêtre d'action du navigateur est fermée. J'ai essayé d'écouter onunload
et onbeforeunload
événements sur <body>
ou window
mais ils ne tirent jamais.Comment détecter quand la fenêtre d'action est fermée?
4
A
Répondre
6
C'est un bug, mais un développeur de chrome a posté une solution de contournement.
1
Comme il semble qu'il n'y a pas de solution simple, c'est ce que j'ai fini par faire si quelqu'un était intéressé.
Pointer périodiquement la page d'arrière-plan à partir de la fenêtre contextuelle, et si la page d'arrière-plan n'est pas reçue ping dans un délai donné, elle déclenche l'action requise. Fonctionne comme une bombe à retardement :)
Dans la page d'arrière-plan:
var timeoutId = 0;
function popupPing() {
if(timeoutId != 0) {
clearTimeout(timeoutId);
}
timeoutId = setTimeout(function() {
popupClosed();
timeoutId = 0;
}, 1000);
}
function popupClosed() {
//...
}
dans une fenêtre:
ping();
function ping() {
chrome.extension.getBackgroundPage().popupPing();
setTimeout(ping, 500);
}
(notez que pop-up pings 2 fois plus rapide que le temps "déclencheur" dans la page d'arrière-plan)
Questions connexes
- 1. C# & Win32 notifier quand une fenêtre séparée est fermée/fermée
- 2. Comment détecter quand la fenêtre est fermée lors de l'utilisation de Show() dans WinForms C#
- 3. comment fermer la fenêtre parent quand la boîte de couleur est fermée?
- 4. iPhone, objet sur un piquet comment puis-je détecter quand la feuille d'action est fermée/rejetée?
- 5. Actualiser la fenêtre parent lorsque la fenêtre contextuelle est fermée
- 6. Comment détecter que la fenêtre est floue?
- 7. Applescript activer la fenêtre fermée
- 8. Comment détecter si une fenêtre est cachée (cmd-h) ou fermée (cmd-w) - Mac
- 9. Comment détecter quand le contenu de la fenêtre a changé
- 10. quand est-ce que la connexion mysql_pconnect() est fermée
- 11. Arrêt modal lorsque la fenêtre est fermée (Cocoa)
- 12. Comment fermer la fenêtre enfant si la fenêtre parent est fermée?
- 13. Comment détecter quand la fenêtre de mon application est activée explicitement par l'utilisateur
- 14. Comment détecter quand un dessin est touché
- 15. Comment détecter quand l'écran est allumé?
- 16. Comment détecter quand Mobile Safari est fermé?
- 17. Comment détecter quand le programme est inactif?
- 18. Comment détecter quand mathjax est complètement chargé?
- 19. fermer la fenêtre enfant automatiquement lorsque la fenêtre parent est fermée
- 20. Une application Cocoa se ferme-t-elle lorsque la fenêtre principale est fermée? Comment faire pour fermer une application Cocoa lorsque la fenêtre principale est fermée?
- 21. Java swing: comment détecter quand la souris est au repos
- 22. Comment détecter quand la fonction javascript de Facebook est prête?
- 23. Comment est-ce que je soulèverais un événement (jQuery ou vanilla Javascript) quand une fenêtre de popup est fermée?
- 24. Détecter une connexion prématurément fermée dans web.py
- 25. silverlight 4 et Actualiser la fenêtre parent lorsque la fenêtre enfant est fermée
- 26. Mon application perd le focus lorsqu'une fenêtre est fermée
- 27. détecter quand une fenêtre que j'ai ouvert se ferme - js
- 28. Comment puis-je détecter quand ma fenêtre est réduite avec wxPython?
- 29. Événement déclencheur sur une page lorsqu'une fenêtre contextuelle est fermée
- 30. "La session est fermée!" - NHibernate
Bien que j'espère vraiment qu'il ya une meilleure réponse (et s'il n'y a pas, nous devrions déposer un bug), c'est un hack assez cool. Une sorte d'interrupteur de l'homme mort: http://en.wikipedia.org/wiki/Dead_man's_switch – npdoty