A pesar de JavaScript ubicado en ASP.NET Core Page (cshtml), siempre aparece un mensaje predeterminado como "Se realizan cambios..." desde el navegador EDGE (o CHROME es lo mismo). ¿Hay alguna manera de usar el mensaje personalizado?
window.onbeforeunload = function confirmExitPage() {
event.preventDefault();
return "My Custom Message I like to Show?";
}
Ya he visto preguntas similares en SO, pero ninguna de ellas ofrece una solución...
EDITAR
Los navegadores evitan absolutamente el mensaje personalizado del usuario , razonablemente. Luego, decida cuándo debe enviarse este mensaje obligatorio al usuario:
<body>
<button onclick="activateReloader()">activate</button>
<button onclick="deactivateReloader()">deactivate</button>
<script>
function onBeforeUnload(e) {
e.preventDefault();
alert("my custom message");//this not works, for demo only
e.returnValue = '';
}
function activateReloader() {
window.addEventListener('beforeunload', onBeforeUnload);
}
function deactivateReloader() {
window.removeEventListener('beforeunload', onBeforeUnload);
}
</script>
</body>
Este código indica cuándo se mostrará el mensaje al usuario y cuándo no.
Esto estaba prohibido en los navegadores hace mucho tiempo (Chrome 51 es de 2016). Ya no puedes mostrar un mensaje personalizado.
A partir de Firefox 44, Chrome 51, Opera 38 y Safari 9.1, se mostrará una cadena genérica que no está bajo el control de la página web en lugar de la cadena devuelta.
https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event#compatibility_notes
Al leer el problema en el rastreador de problemas de Chromium, se trataba de evitar que los sitios malos lo usaran para intentar estafar a los usuarios.
Los cuadros de diálogo onbeforeunload se utilizan para dos cosas en la Web moderna:
- Evitar que los usuarios pierdan datos sin darse cuenta.
- Estafando a los usuarios.
En un intento de restringir su uso para este último sin detener el primero, no mostraremos la cadena proporcionada por la página web.
https://bugs.chromium.org/p/chromium/issues/detail?id=587940