Estoy intentando ejecutar una función cuando el usuario deja (cierra) el navegador o la página y lo tengo trabajando en todos los navegadores, excepto en Chrome.Chrome antes de descargar el evento cuando la pestaña (o navegador) se cierra
Chrome ejecuta la función con éxito si navego fuera de la página pero no la ejecuto si cierro la pestaña o cierro el navegador por completo.
La función que estoy ejecutando al final crea una imagen y envía algunos datos a mi servidor (similar a cualquier informe analítico) ejemplo: img.src = "url? Data = yyy". Esta imagen se crea dinámicamente con js.
¿Alguien puede arrojar algo de luz sobre cuál podría ser el problema? me han reducido a un par de razones:
1) No estoy usando el evento correcto cuando se cierra la pestaña (es decir, no beforeunload)
2) Chrome realmente ejecuta la función de la imagen, pero doesn No se envían porque los navegadores/página se cierran.
Cualquier ayuda es apreciada. Gracias.
Aquí está el código de ejemplo:
if(window.addEventListener){
window.addEventListener("beforeunload", page_unload, false);
}
function page_unload(){
var img = new Image();
var img_src = "http://www.myurl.com?data=yyy"
img.src = img_src;
}
cada pestaña de cromo se ejecuta en su propio proceso ¿no? Por lo tanto, si tiene algo que se ejecuta en la pestaña cerrar, incluso si se ejecuta, el proceso que contiene el código se detendrá. De lo contrario, es posible que veas un montón de pestañas colgantes de Chrome abiertas, que nunca había visto antes. –
a la derecha, cada pestaña es su propio proceso ... y tendría sentido que cualquier código asociado con ese proceso también termine. Firefox maneja esta situación con elegancia y hace lo que necesito que haga, así que esperaba que me perdiera algo con respecto a Chrome – Nik
Lo que estás tratando de hacer no es posible. El evento 'onbeforeunload' solo puede usarse para arrojar un cuadro de diálogo para animar al usuario a permanecer en su página (devolviendo el texto para avisarle al usuario): cuando el evento se dispara, no tiene tiempo izquierda para hacer una solicitud HTTP. – duskwuff