mi guion
<script type="text/javascript"> var hook = true; window.onbeforeunload = function() { if (hook) { return "Do you sure what to leave" } } function unhook() { hook=false; } </script>Este código bloquea al usuario cuando
Solo quiero bloquear al usuario cuando intenta cerrar el navegador o la pestaña.
Esto normalmente se usa para evitar que los usuarios pierdan sus borradores debido a acciones inesperadas de salida de página, por lo que normalmente solo configuraremos esto cuando el usuario escriba algo en un área de entrada/texto, etc., y es una acción predecible del usuario (porque podemos detectar si el usuario introducido nada o no).
Pero, desea bloquear al usuario solo cuando intenta cerrar el navegador o la pestaña, esta no es una acción predecible y no siempre puede ser detectable (como cerrar el navegador).
Entonces, si desea hacerlo, creo que debe adjuntar oyentes a cualquier otra acción de salida de página aceptable (como las que mencionó) y cancelar el bloqueo devolviendo nulo/falso en onbeforeunload .
Por ejemplo, este enlace de aceptación redirige:
window.onbeforeunload = () => true; document .querySelectorAll("a") .forEach((element) => element.addEventListener( "click", () => (window.onbeforeunload = null) ) );No sé cómo detectar la recarga de la página, ¿tal vez detectando que se presiona el botón F5 o no? pero esto no puede saber si el usuario hace clic manualmente en el botón Actualizar en el navegador.
Por cierto, realmente debería reconsiderar por qué le gustaría hacer eso, porque si no es para evitar que los usuarios pierdan sus borradores, entonces creo que no es una acción fácil de usar.