Tengo una etiqueta HTML con un atributo de destino. El problema es que quiero evitar que el usuario abandone mi sitio de esta manera sin guardar sus cambios.
Lo intenté
window.onbeforeunload = function(){ myfun(); return 'Are you sure you want to leave?'; };También cambié mi código a:
window.addEventListener('onbeforeunload', (e) => { e.preventDefault(); console.log('Inside event') })Pero eso no lo hizo...
El método return 'string' no funciona de manera confiable en todas partes. La mayoría, si no todos, los navegadores web no mostrarán un mensaje personalizado. Y también debe llamar a preventDefault en el evento:
window.onbeforeunload = (event) => { myfun(); event.preventDefault(); return 'Are you sure you want to leave?'; }; EDITAR Esto no funcionará usando alert , confirm o prompt porque anulará el mensaje predeterminado del navegador antes de que se muestre. Sin embargo, puedes hacer cualquier otra cosa:
window.onbeforeunload = function(e){ console.log('Leaving...'); e.preventDefault(); };