Saltar al contenido

¿Usando onbeforeunload sin diálogo?

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 '', falseo 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *