personalizado event chrome beforeunload google-chrome google-chrome-extension onbeforeunload

personalizado - ¿El evento onbeforeunload se activa para popup.html en una extensión de Google Chrome?



onbeforeunload chrome message (3)

"beforeunload" no se activa para las ventanas emergentes de acción del navegador. Créeme, lo intenté. Sin embargo, "descargar" debería activarse correctamente, así que escucha eso.

En realidad, tengo un sistema similar en su lugar, que le permite adjuntar eventos usando addEventListener, y se limpian automáticamente cuando se dispara el evento de descarga.

Aquí hay un pequeño consejo: obviamente no puede usar console.log , porque en el momento en que se dispara el evento de descarga, ya es demasiado tarde. Pero, puedes hacer esto:

var background = chrome.extension.getBackgroundPage(); addEventListener("unload", function (event) { background.console.log(event.type); }, true);

Al usar el código anterior, puede abrir la consola de la página de fondo, lo que debería mostrar que el evento de descarga se activó correctamente.

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 que se generen eventos de onbefore o onloadload desde la ventana emergente. ¿Se disparan estos eventos? Si no, ¿alguna idea sobre cómo capturar el popup se cierra?


He tenido una especie de problema similar. En mi caso, he puesto el foco en un elemento que estaba en la página emergente. Entonces, cuando se cierra la ventana emergente, el elemento pierde el foco y puedo detectar el evento borroso.


Si ha cambiado a usar páginas de eventos en lugar de páginas de fondo en su extensión, la forma recomendada de obtener acceso es llamando a chrome.runtime.getBackgroundPage() con una función que se recupera con la referencia de la página de fondo.

Sin embargo, si intenta obtener la página de fondo en un controlador de onbeforeunload , como este:

document.addEventListener("beforeunload", function() { chrome.runtime.getBackgroundPage(function(backgroundPage) { backgroundPage.log("unloading"); }); });

La devolución de llamada no parece activarse antes de que se descargue la página, por lo que la llamada log() nunca se realiza.

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 era no crear el controlador con addEventListener() . En su lugar, tuve que ir a la vieja escuela y configurar el controlador directamente en la window :

window.onbeforeunload = function() { chrome.extension.getBackgroundPage().log("unloading"); };

Que finalmente llegó a la página de fondo.