A menudo es una necesidad de esto, es decir, al dejar una determinada página web, el usuario no necesariamente hace clic para cerrar sesión, lo que hará que la sesión no se destruya a tiempo. Para realizar la función de inicio de sesión automática cuando el usuario sale de la página, el comando de sesión de sesión debe enviarse en la función de manejo de eventos de OnbeforeRload de la página web. Este lugar se implementa principalmente usando AJAX. A veces también implica problemas de acceso a intermedios cruzados. Hay un problema de compatibilidad del navegador en este lugar.
Hay dos puntos de incompatibilidad de los navegadores cuando se trata de este requisito:
1. Incompatibilidad Al tratar con AJAX, JQuery se usa para resolverlo aquí.
2. Incompatibilidad al enviar la solicitud AJAX
El código principal es el siguiente:
función logrout () {var logOutUrl = "xxxx"; // URL utilizada para iniciar sesión en el usuario if (logOutUrl == "") return; var userAgent = Navigator.Useragent.tOlowerCase (); if (userAgent.IndexOf ("msie")>-1) {// ie $ .AJAX ({url: logOutUrl, CrossDomain: true, async: false, dataType: "jsonp"}); } else {// Firefox Chrome $ .AJAX ({url: logouturl, async: false}); }} window.onbeforeunload = function () {logrout (); };Descripción del código:
Firefox tiene un alto nivel de seguridad al procesar JS. Muchos permisos que JS puede usar en IE y Chrome están restringidos en Friefox, así que
if (userAgent.Indexof ("msie")>-1) {// ie} else {// Firefox Chrome}Este código determina el tipo de navegador actual.
El código compatible para Firefox y Chrome es el siguiente:
$ .AJAX ({url: logouturl, async: false});ASYNC debe establecerse en FALSO, es decir, es sincrónico, y el verdadero método asíncrono no se puede usar, de lo contrario, la solicitud no puede enviarse. De hecho, Chrome también es adecuado para el siguiente código IE. Cuando se apaga el navegador, el comando de cierre de sesión se enviará automáticamente. Sin embargo, al hacer clic en el botón de actualización del navegador, también espera iniciar sesión automáticamente al usuario. Chrome solo puede usar la línea de código anterior para emitir una solicitud de cierre de sesión.
El código compatible para IE es el siguiente:
$ .AJAX ({url: logOutUrl, CrossDomain: true, async: false, dataType: "jsonp"});CrossDomain se establece en verdad para resolver problemas de acceso a dominio cruzado. Si este problema no existe, esta propiedad se puede ignorar. Es mejor establecer el atributo async en falso, y verdadero también está bien. DataType: la propiedad "JSONP" también se usa para resolver problemas de acceso de dominio cruzado. Se usa junto con CrossDomain. No hay problema de dominio cruzado. Estas dos propiedades se pueden omitir.
El código anterior se probó en IE9, Chrome27 y Firefox21.
La anterior es la breve discusión que el editor le trae sobre la ventana. Espero que todos apoyen a Wulin.com ~