javascript - personalizado - onbeforeunload para que sirve
Usando onbeforeunload sin diálogo? (4)
Estoy intentando publicar datos cuando un usuario abandona mi página. Finalmente he logrado encontrar una solución de trabajo, sin embargo, muestra un diálogo de confirmación cuando el usuario se va. He intentado return null;
pero no funcionó. ¿Es posible desactivar el diálogo?
window.onbeforeunload = function() {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
return '''';
}
Desde la página de la Red de Desarrolladores de Mozilla :
Cuando este evento devuelve un valor no nulo, se le solicita al usuario que confirme la descarga de la página.
Esto significa que el valor de retorno del controlador debe ser undefined
(no ''''
, false
o null
) para evitar que se active la solicitud de confirmación.
window.onbeforeunload = function() {
$.post("track.php", {
...
});
return undefined;
}
En javascript puede omitir el valor de retorno por completo para obtener el mismo resultado.
En coffeescript con jquery es algo así como
$(document).ready ->
$(window).bind(''beforeunload'', ->
#put your cleanup code here
undefined
)
He encontrado un truco muy simple para hacer que esto funcione utilizando
$(window).bind(''onbeforeunload'', function () {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
});
Podría probar esto:
$(window).on(''beforeunload'', function (e) {
if (e.originalEvent) $.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
else $.get("", {
async: false
});
$(this).trigger(''beforeunload'');
}
Esto creará muchas solicitudes inútiles, pero debe permitir que su primera solicitud tenga tiempo suficiente para llegar al servidor.
Si desea desactivar el diálogo, por favor escriba
window.onbeforeunload = function() { ... return; }
en lugar de
window.onbeforeunload = function() { ... return ''''; }
window.onbeforeunload = function() { ... return ''''; }
.
Espero que te ayude.