ventana preguntar pestaña navegador evitar evento detectar con cierre chrome cerrar cambio antes javascript popup browser-close

javascript - pestaña - Preguntar usuario antes de cerrar el navegador?



javascript detectar cierre pestaña (4)

Creo que esto puede ser parte de su problema:

else if(window.onbeforeunload) { window.onbeforeunload = unloadMess; };

Esa prueba en la declaración "if" solo será verdadera si ya existe una función de controlador. Esa prueba no significa "¿el objeto de ventana tiene una propiedad ''onbeforeunload''?". Significa que, "¿la propiedad ''onbeforeunload'' de la ventana actualmente no es nula?".

Creo que sería seguro simplemente configurar "onbeforenload" directamente, para cualquier navegador.

Tenemos un portal administrativo que nuestros maestros olvidan constantemente para descargar sus últimas instrucciones en PDF antes de cerrar la sesión y / o cerrar la ventana del navegador. He mirado a mi alrededor pero no encuentro lo que estoy buscando.

Quiero lograr los siguientes objetivos:

Meta 1

Antes de que un usuario pueda cerrar la ventana del navegador, se le pregunta "¿Recordó descargar su formulario?" Con dos opciones, sí / no. En caso afirmativo, cierre, si no, vuelva a la página.

Meta 2

Antes de que un usuario pueda hacer clic en el botón ''cerrar sesión'', se le indicará lo mismo que arriba.

Mi primer paso en el código muy básico (que no funciona para cerrar el navegador) es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript"> function init() { if (window.addEventListener) { window.addEventListener("beforeunload", unloadMess, false); } else if (window.onbeforeunload) { window.onbeforeunload = unloadMess; }; } function unloadMess() { var User_Message = "[Your user message here]" return User_Message; } </script> </head> <body onload="init();"> hello this is my site </body> </html>

EDITAR - NUEVAS CUESTIONES

La solución proporcionada a continuación funciona, pero también tiene sus propios problemas:

Cuando el usuario hace clic en el enlace para descargar los formularios, la página piensa que están intentando salir y, a su vez, les presenta un mensaje de error. Además, me gustaría que ocurriera un evento u otro pero no necesariamente ambos. Es decir, presionan el botón ''cerrar sesión'' y se les presenta el evento OnClick, ENTONCES el indicador del navegador. ¿Algunas ideas?


No puedes alertar o cosas así en la onbeforeunload , no puedes simplemente devolver falso para que el usuario no abandone la página, como onbeforeunload con otros eventos como onclick . Esto permitiría que un sitio hiciera imposible dejarlo.

Sin embargo, solo puede devolver una cadena, el navegador muestra un cuadro de diálogo de confirmación que incluye su cadena y le pregunta al usuario si realmente quiere irse.


Pointy tiene razón sobre los eventos de cierre del navegador: ¿imagina si los sitios malvados podrían evitar que cierre sus ventanas? Por lo tanto, no puede evitar que cierren su sitio, pero puede hacer una alerta.

En lo que respecta a su botón de cierre de sesión, eso es mucho más sencillo:

<a href="logout.html" onClick="return confirm(''Did you remember to download your form?'');">Logout</a>


Actualización 2017

Todos los navegadores modernos ya no admiten mensajes personalizados.

window.onbeforeunload = function(evt) { return true; }

Este para cerrar la pestaña:

window.onbeforeunload = function(evt) { var message = ''Did you remember to download your form?''; if (typeof evt == ''undefined'') { evt = window.event; } if (evt) { evt.returnValue = message; } return message; }

y use el evento onClick para el botón de cierre de sesión:

onClick="return confirm(''Did you remember to download your form?'');"