Estoy escribiendo una extensión de Google Chrome con una ventana emergente y una página de fondo. La ventana emergente se suscribe a ciertos eventos que genera el fondo, y me gustaría cancelar la suscripción a esos eventos cuando la ventana emergente desaparezca. Sin embargo, no veo ninguno de los eventos onbeforeunload o onunload generados desde la ventana emergente. ¿Son estos eventos despedidos? Si no, ¿alguna idea sobre cómo capturar ventana emergente se cierra?¿Onbeforeunload trigger de evento para popup.html en una extensión google chrome?
Respuesta
Tuve un problema similar. En mi caso, me he centrado en un elemento que estaba en la página emergente. Entonces, cuando la ventana emergente está cerrada, el elemento pierde el foco y puedo ver el evento de desenfoque.
Este truco no funciona para mí, era realmente esperanzador, pero no funciona. –
"beforeunload" es no activado para las ventanas emergentes de acción del navegador. Créame, lo intenté. Sin embargo, "descargar" debería dispararse correctamente, así que escucha eso.
En realidad, tengo un sistema similar en su lugar, que te permite adjuntar eventos usando addEventListener, y se limpian automágicamente cuando se dispara el evento de descarga.
He aquí un pequeño consejo: obviamente no puede usar console.log
, porque para cuando el evento de descarga se dispare, ya es demasiado tarde. Sin embargo, usted puede hacer esto:
var background = chrome.extension.getBackgroundPage();
addEventListener("unload", function (event) {
background.console.log(event.type);
}, true);
Al utilizar el código anterior, se puede abrir la consola de la página de fondo, que debe demostrar que el evento de descarga se enciende correctamente.
¡Gracias por la punta de la consola de fondo! ¡Bastante útil! –
@AlexStack Revertí tu edición. 'chrome.runtime.getBackgroundPage' no es equivalente, es asincrónico. – Xan
Al menos con una página de eventos y usando 'chrome.runtime.getBackgroundPage()' para hacer una llamada a la página de fondo para registrar algo, no veo este trabajo para eventos 'download'. – jdunning
Si ha cambiado a usar event pages en lugar de páginas de fondo en su extensión, la forma recomendada de obtener acceso es llamando al chrome.runtime.getBackgroundPage()
con una función que se devuelve con la referencia de página de fondo.
Sin embargo, si se intenta obtener la página de fondo en un controlador de onbeforeunload
, así:
document.addEventListener("beforeunload", function() {
chrome.runtime.getBackgroundPage(function(backgroundPage) {
backgroundPage.log("unloading");
});
});
no parece La devolución de llamada al fuego antes de que la página se descarga, de manera que log()
llamada nunca se hace.
En un comentario anterior, Pauan sugirió usar chrome.extension.getBackgroundPage()
para obtener la página. La única forma en que podía hacer que eso funcionara no era crear el controlador con addEventListener()
. En vez tuve que ir de la vieja escuela y establecer el controlador directamente en window
:
window.onbeforeunload = function() {
chrome.extension.getBackgroundPage().log("unloading");
};
que por fin se consiguió a través de la página de fondo.
- 1. ¿Debug popup.html de una extensión de Chrome?
- 2. Extensión de Chrome: fuerza popup.html para cerrar
- 3. Impedir que se abra una extensión de Chrome popup.html
- 4. Extensión de Chrome: actualice popup.html a una nueva página html
- 5. Cambiar el tamaño de popup.html en la extensión de Chrome
- 6. Evento onBrowserCerrar para Google Chrome Extension?
- 7. jQuery.ajax en una extensión de Google Chrome
- 8. Extensión de Chrome: icono de extensión en clic, abra popup.html en la nueva pestaña
- 9. jQuery .trigger() o $ (ventana) no funciona en Google Chrome
- 10. Descargue la fuerza en Google Chrome Extensión
- 11. Extensión de Chrome Solicitud de Ajax
- 12. Uso de AngularJS en una extensión de Google Chrome
- 13. Almacenamiento seguro en una extensión de Google Chrome
- 14. Autoextensión de extensión de Chrome
- 15. Extensión de Google Chrome Cliente REST simple
- 16. ¿Iniciar una aplicación externa desde una extensión de Google Chrome?
- 17. carga de extensión de Chrome Google
- 18. Extensión relativa a la extensión de Google Chrome
- 19. Google Chrome números de extensión en el icono
- 20. Jquery trigger key.Code evento
- 21. Cómo construir una extensión de Chrome como Google Hangouts
- 22. extensión de Chrome incendios detectores de evento múltiple de veces
- 23. ¿Puedo abrir programáticamente devtools desde una extensión de Google Chrome?
- 24. ¿Cómo puedo portar una extensión de Google Chrome a Firefox?
- 25. evento onblur no funciona con google chrome
- 26. Incrustar imágenes en una extensión de Chrome
- 27. ¿Es posible activar el evento onbeforeunload programmatically?
- 28. Extensión de Google Chrome: Imprima la página en silencio
- 29. Extensión de Chrome en python?
- 30. ¿Hay una extensión como Tamperdata para Chrome?
Tengo esta pregunta exacta. ¿Alguna vez encontraste una respuesta? –