este problema se puede tratar de variadas formas, sin embargo te enseñamos la respuesta más completa en nuestra opinión.
Solución:
Desde la página de la red de desarrolladores de Mozilla:
Cuando este evento devuelve un no-void valor, se 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 activar el aviso 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
)
Si desea deshabilitar el diálogo, solo escriba
window.onbeforeunload = function()
...
return;
en vez de
window.onbeforeunload = function()
.
...
return '';
Espero que te ayude.
Podrías 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 debería permitir que su primera solicitud tenga suficiente tiempo para llegar al servidor.
No se te olvide dar visibilidad a esta crónica si te valió la pena.