2010-12-07 15 views
37

Quiero publicar un mensaje al servidor cuando el usuario navegar fuera de la página actual, estoy usando .unload este momento, pero el resultado no es fiable, incluso en su documento se dice verdad:jquery: ¿descargar o antes de descargar?

El manejo exacto del evento de descarga ha variado de versión a versión de los navegadores . Por ejemplo, algunas versiones de Firefox activan el evento cuando se sigue un enlace , pero no cuando se cierra la ventana . En el uso práctico, el comportamiento debe probarse en todos los navegadores compatibles con , y debe contrastar con el evento propietario previo a la .

Debo usar beforeunload event? ¿Es confiable?

+1

FYI: la descarga está en desuso, https://api.jquery.com/unload/ –

Respuesta

55

Sí, beforeunload es más fiable, pero asegúrese de asignar directamente (no unido a través de jQuery), así:

window.onbeforeunload = function() { /* do stuff */ }; 

unload El evento en sí no estaba destinado para el trabajo a realizar, solamente limpieza de objetos ... a medida que los recolectores de basura se vuelven cada vez mejores, hay menos razones para que el navegador incluso active el evento unload.

También tenga en cuenta que, para su caso específico, debería realizar una solicitud sincrónica al servidor ... de lo contrario, el navegador no esperará hasta que se complete la llamada AJAX.

+1

¿Window.onbeforeload fire en todos los navegadores (digamos IE6)? – Kangkan

+1

@Kangkan - sí, aunque algunos bloques de anuncios más nefastos evitarán esto ... aunque son bastante raros. –

+0

se debe mencionar que puede devolver un valor de cadena del controlador de eventos, que se muestra al usuario. – jAndy

Cuestiones relacionadas