content - JavaScript antes de salir de la página
change title javascript (8)
Quiero hacer una confirmación antes de que el usuario abandone la página. Si dice que está bien, redireccionará a una nueva página o cancelará para salir. Intenté hacerlo con onunload
<script type="text/javascript">
function con() {
var answer = confirm("do you want to check our other products")
if (answer){
alert("bye");
}
else{
window.location = "http://www.example.com";
}
}
</script>
</head>
<body onunload="con();">
<h1 style="text-align:center">main page</h1>
</body>
</html>
¿Pero confirma después de la página ya cerrada? ¿Cómo hacerlo correctamente?
Sería aún mejor si alguien muestra cómo hacerlo con jQuery?
Este código también detecta el estado del formulario cambiado o no.
$(''#form'').data(''serialize'',$(''#form'').serialize()); // On load save form current state
$(window).bind(''beforeunload'', function(e){
if($(''#form'').serialize()!=$(''#form'').data(''serialize''))return true;
else e=null; // i.e; if form state change show warning box, else don''t show it.
});
Puede Google JQuery Form serializar función, esto recogerá todas las entradas de formulario y guardarlo en matriz. Creo que esta explicación es suficiente :)
Esto alertará al salir de la página actual
<script type=''text/javascript''>
function goodbye(e) {
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = ''You sure you want to leave?''; //This is displayed on the dialog
//e.stopPropagation works in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload=goodbye;
</script>
Esto es lo que hice para mostrar el mensaje de confirmación cuando tengo datos no guardados
window.onbeforeunload = function () {
if (isDirty) {
return "There are unsaved data.";
}
return undefined;
}
regresar "indefinido" deshabilitará la confirmación
Nota: devolver "nulo" no funcionará con IE
También puede usar "indefinido" para deshabilitar la confirmación
window.onbeforeunload = undefined;
Para tener un popop con Chrome 14+, debes hacer lo siguiente:
jQuery(window).bind(''beforeunload'', function(){
return ''my text'';
});
Al usuario se le preguntará si quiere quedarse o irse.
Puede usar el siguiente delineador para preguntar siempre al usuario antes de abandonar la página.
window.onbeforeunload = s => "";
Para preguntarle al usuario cuando algo en la página ha sido modificado, vea esta respuesta .
Solo un poco más útil, habilitar y deshabilitar
$(window).on(''beforeunload.myPluginName'', false); // or use function() instead of false
$(window).off(''beforeunload.myPluginName'');
onunload
(o onbeforeunload
) no puede redirigir al usuario a otra página. Esto es por razones de seguridad.
Si desea mostrar un mensaje antes de que el usuario abandone la página, use onbeforeunload
:
window.onbeforeunload = function(){
return ''Are you sure you want to leave?'';
};
O con jQuery:
$(window).bind(''beforeunload'', function(){
return ''Are you sure you want to leave?'';
});
Esto solo le preguntará al usuario si quiere abandonar la página o no, no puede redireccionarla si elige permanecer en la página. Si eligen irse, el navegador irá donde lo indicaron.
Puedes usar onunload
para hacer cosas antes de que la página se descargue, pero no puedes redirigir desde allí (Chrome 14+ bloquea las alertas dentro de onunload
):
window.onunload = function() {
alert(''Bye.'');
}
O con jQuery:
$(window).unload(function(){
alert(''Bye.'');
});
<!DOCTYPE html>
<html>
<body onbeforeunload="return myFunction()">
<p>Close this window, press F5 or click on the link below to invoke the onbeforeunload event.</p>
<a href="https://www.w3schools.com">Click here to go to w3schools.com</a>
<script>
function myFunction() {
return "Write something clever here...";
}
</script>
</body>
</html>