2010-12-16 13 views
11

Tengo una página donde el usuario puede arrastrar y soltar objetos y guardarlos como un image.When un usuario navega fuera de la página, el evento beforeunload se dispara. Ahora, esto sucede todo el tiempo. Lo que quiero hacer es, desenlaza el evento si el usuario ha guardado su trabajo, por lo que el mensaje puede no aparecer again.To ello he utilizado el método de desatar en jQuery. Pero no parece funcionar. A continuación se muestra el código para enlazar y desvincular los eventos.No puede desenlazar el evento ventana beforeunload en Jquery

var notSaved = function() 
{ 
    return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ; 
} 
$(window).bind('beforeunload', notSaved); 

Después de guardar método ha sido llamado,

$(window).unbind('beforeunload', notSaved); 

¿qué estoy haciendo mal aquí?
Además, el método de guardar es en realidad una llamada Ajax.

Respuesta

28

beforeunload no funciona de manera confiable, en lo que respecta al encuadernado. Debe asignar de forma nativa:

window.onbeforeunload = function() { 
    return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ; 
} 

Y en su método para guardar:

window.onbeforeunload = null; 
+0

Muchas gracias ... que salvó el día para mí :) – bitblt

+0

esto no funcionará en IE, lo lo que quieres es 'window.onbeforeunload = undefined' – brupm

Cuestiones relacionadas