Lo intenté antes de descargar, ya que requiere una vez la interacción del usuario para llamar, ¿hay alguna forma de llamar a un evento sin interacción del usuario cuando el usuario sale del navegador después de abrir la pestaña de la aplicación? O cualquier otra solución sin usar onbeforeunload que impida que el usuario salga del navegador.
window.onbeforeunload = function (event) { var message = 'Important: Please click on \'Save\' button to leave this page.'; if (typeof event == 'undefined') { event = window.event; } if (event) { event.returnValue = message; } return message; }; $(document).ready(function(){ $(".label").click(function(){ alert('label'); window.onbeforeunload = null; } ); $(".new_cont").click(function(){ alert('new_cont'); window.onbeforeunload = null; } ); })Tanto en Firefox como en Chrome necesitas al menos una interacción con la página. Dado que esta función es para evitar la pérdida de datos ingresados por el usuario, si no se realizó ninguna acción en la página, significa que el usuario no ingresa ningún dato.
Esto se debe a que onbeforeunload está adjunto al objeto de la ventana, y cuando descarga la página principal, este evento no se activará a menos que tenga el foco en este iframe.
<script type="text/javascript"> window.onbeforeunload = function () { return "Did you save your stuff?" }Para referencia https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload