Red de conocimiento informático - Aprendizaje de programación - ¿El navegador Chrome realmente admite el evento onbeforeunload al capturar el evento de cierre del navegador usando JS?

¿El navegador Chrome realmente admite el evento onbeforeunload al capturar el evento de cierre del navegador usando JS?

¿El navegador Chrome realmente admite el evento onbeforeunload cuando JS captura el evento de cierre del navegador?

Antecedentes: quiero contar el número de vistas de vídeo cuando Flash está cerrado y quiero envíe una solicitud al servidor 1, Firefox, IE9, (IE8 no funciona) todos funcionan y Chrome no funciona, presente la siguiente manera.

Las conclusiones comunes en línea son las siguientes:

1. La función window.onbeforeunload() se utiliza principalmente para capturar eventos de cierre del navegador (incluida la actualización). >2. La función window.onunload() realiza acciones principalmente después de cerrar el navegador;

En la práctica, escuché que hay algunos problemas con Firefox:

¿ver impresión simple?

función wisTracker(){ ? this.bindClick = function(){ ?

if(document.attachEvent){ ?

?window.attachEvent("onbeforeunload" , this.tracePlay ); ?

} else { ?

?window.addEventListener("antes de descargar", this.tracePlay, false ?

} ? }; playTraceerImg"); ?

? playTraceerImg.src = $('#__XYFlashPlayer__').get(0).getStaticData() "amp;

} ? }; ?

} ?

Llamar a footer.html:

¿ver impresión simple?

wisTracker = nuevo wisTracker() ?

wisTracker.bindClick(); ?

Contiene en cada página visitada:

ver impresión simple?

lt ;{include file="admin/footer.html"}gt; ?

En este footer.html está el nombre de dominio de otro js: (los sitios web grandes hacen esto, programas y css, js está separado para compartir la presión sobre el servidor)

Existe el siguiente js en la plantilla footer.html para analizar esta URL estática:

lt script src="lt; {$staticURL} gt ;js/justwinit.common.js?ver=lt;{$version}gt;" type="text/javascript"gt;lt;/scriptgt;

preview.php proporcione esta configuración para renderizar En la plantilla Smarty:

$this-gt; view-gt; staticURL = KO::config('url.static_url');

Configurar el archivo estático en el dominio url.php nombre, esto está configurado en apache, hay ejemplos a continuación:

'static_url' =gt;'/',

dominio de configuración de Apache

Nombre:

¿ver impresión simple?

lt; VirtualHost *: 80gt ?

# ServerAdmin webmaster@dummy-host2.example.com ?

DocumentRoot "D:\www\justwinit\trunk\assets\static" ?

Nombre del servidor s.justwinit.cn ?

Registro de errores "logs/w.justwinit.cn- error.log" ?

CustomLog "logs/w.justwinit.cn-access.log" común ?lt; Directorio "D:/www/justwinit/trunk/assets/static/"gt; ?

Opciones Índices SeguirSymLinks MultiViews ?

¿Permitir Anular todo?

¿Ordenar Denegar, Permitir? ¿Denegar de todos?

lt; /Directorygt; ?

lt;/VirtualHostgt; ?

Usando js ordinario, es imposible ser compatible con el monitoreo de eventos de cierre de IE, FF, Google y otros navegadores. Después de la prueba, es posible lograr compatibilidad con jq, pero no garantiza una compatibilidad completa. Aún necesita probarlo usted mismo. Solo necesita una breve oración para ser compatible con al menos tres navegadores principales:

ver impresión simple ?

lt;script type="text/javascript"gt; ?

window.onbeforeunload = function() {return '¿Seguro que te vas?';};

lt;/scriptgt;?

Pero:

¿El navegador Chrome admite el evento onbeforeunload?

Chrome Safari no activará el evento onbeforeunload al llamar a los métodos document.write, document.open, document.close y al pseudoprotocolo "javascipt:".

/causes/BX2047

Es un error, consulte /p/chromium/issues/detail?id=4422

Chrome no admite la descarga previa al uso él.

?

window.onbeforeunload=function(){...} ¿no ejecuta el código?

$(window).bind('beforeunload', function(){

$(ventana).bind('antes de descargar', function(){

alerta("Adiós")

});

Funciona muy bien con Firefox, IE8 pero no en Chrome. ¿Es un problema conocido o hay alguna alternativa para eso?

En realidad, lo que intento hacer es registrar los detalles cada vez que el usuario intenta cerrar el navegador. .

función LogTime()

{

jQuery.ajax({

? tipo: "POST",

? url: "log.php",

? datos: "",

? caché: falso,

éxito: función (respuesta) )

? {

} }

);

}

$(ventana).bind ('beforeunload', function(){

LogTime();

p>

});

Esto funciona bien en Firefox, pero no en Chrome

De:/questions/10680544/beforeunload-chrome-issue

También probé el Ajax del que hablan los extranjeros y realmente no funciona. Probaré otros métodos y. escríbalo así:

window.onbeforeunload = function() { console.log("Helo prueba Chrome antes de descargar "); callExternal()

}; p>o:

lt; body ?onunload="alert('Helo test chrome unload')"gt ;

Cuando hay salidas de alerta, aparecerá el siguiente mensaje:

Alerta bloqueada ('Helo prueba Chrome antes de descargar').

Alerta bloqueada('Descarga de Chrome de prueba de Helo') durante la descarga.

Último método llamado usando Iframe:

Agregar:

lt; iframe id="iframedemo" name="iframedemo" src="inner.html" width ="10" frameborder="1"gt;lt;/iframegt; ?

inner.html:

lt;script language="javascript"gt;

función demostraciónfunción() {

console.log("1222");

alerta("demofunción");

}

lt;/scriptgt;

El problema aún indica que hay un problema Hola, ¿qué debo hacer?

Usar Ajax en IFrame tampoco funciona:

view Plainprint?

lt; script src="/ajax/libs/jquery/1.4.2/ jquery.min.js"gt;lt;/scriptgt;?

lt;scriptgt;!window.jQuery &document.write('lt;script src="js/jquery-1.4.2. min.js"gt;lt;\/scriptgt;')

lt;/scriptgt; ?

lt;script language="javascript"gt; ?

función demofunction() { ?

jQuery.ajax({ ?

? tipo: "POST", ?

? url: "log.php ", ?

? datos: "", ?

? caché: falso, ?

? éxito: función(respuesta)?

? { ?

? } ?

? /p>

¿Onunload y Onbeforeunload?

Onunload y onbeforeunload se llaman al actualizar o cerrar. Se pueden especificar a través de window.onunload en el script o en el bodygt especificado. La diferencia es que onbeforeunload se ejecuta antes que onunload y también puede impedir la ejecución de onunload. ?

Onbeforeunload también se llama cuando la página se actualiza o se cierra. Se llama a Onbeforeunload cuando se va al servidor para leer una nueva página, pero aún no ha comenzado a leer mientras onunload ya ha leído desde el servidor; y necesita cargarla. La nueva página se llama cuando la página actual está a punto de ser reemplazada. Onunload no puede evitar que la página se actualice y se cierre. Y Onbeforeunload puede hacerlo.

/victor16345/article/details/7670464

Procesamiento de descarga y descarga previa cuando la ventana está cerrada

Si desea preguntarle al usuario cuándo salta la página, necesitas usar el evento onbeforeunload Devolver caracteres de consulta en:

window.onbeforeunload = function(e) {?

return '¿Estás seguro de abandonar esta página?';?

} ;

Si necesita realizar algunas acciones de solicitud al cerrar la página, es mejor manejarlas en el evento onunload:

window.onunload = function() {?

//cerrar función?

};

Notas:

1: No intente vincular estos dos eventos con addEventListener o adjuntoEvent, el navegador no es compatible.

2: Deberías preguntar en onbeforeunload y poner la acción de salida en onunload, para que la lógica quede clara.

3: Si la solicitud ajax se coloca en el evento onunload, ajax debe ejecutarse sincrónicamente; de ​​lo contrario, no hay garantía de que la solicitud ajax sea exitosa.