Muitas vezes, é necessário isso, ou seja, ao deixar uma determinada página da web, o usuário não clica necessariamente para fazer o logon, o que fará com que a sessão não seja destruída a tempo. Para realizar a função de logout automática quando o usuário sair da página, o comando de logout precisa ser enviado na função de manuseio de eventos OnBeSeunload da página da web. Este lugar é implementado principalmente usando o AJAX. Às vezes, também envolve problemas de acesso aos domínios. Há um problema de compatibilidade do navegador neste local.
Existem dois pontos incompatibilidade dos navegadores ao lidar com esse requisito:
1. Incompatibilidade Ao lidar com Ajax, o jQuery é usado para resolvê -lo aqui.
2. Incompatibilidade ao enviar solicitação de Ajax
O código principal é o seguinte:
função logout () {var logouturl = "xxxx"; // URL usado para registrar o usuário se (logouturl == "" ") retornar; var userAgent = Navigator.UserAgent.TolowerCase (); if (userAgent.indexof ("msie")>-1) {// ie $ .ajax ({url: logouturl, crossDormain: true, assíncrono: false, datatype: "jsonp"}); } else {// Firefox Chrome $ .ajax ({url: logouturl, assíncrono: false}); }} window.onbeforeUnLoad = function () {logout (); };Descrição do código:
O Firefox tem um alto nível de segurança ao processar JS. Muitas permissões que JS podem usar no IE e Chrome são restritas em Frionex, então
if (userAgent.indexof ("msie")>-1) {// ie} else {// Firefox Chrome}Este código determina o tipo de navegador atual.
O código compatível para Firefox e Chrome é o seguinte:
$ .ajax ({url: logouturl, assíncrono: false});O assíncrono precisa ser definido como falso, ou seja, é síncrono e o verdadeiro método assíncrono não pode ser usado; caso contrário, a solicitação não pode ser enviada. De fato, o Chrome também é adequado para o seguinte código do IE. Quando o navegador estiver desligado, o comando de logout será enviado automaticamente. No entanto, ao clicar no botão de atualização do navegador, ele também espera registrar automaticamente o usuário. O Chrome pode usar apenas a linha de código acima para emitir uma solicitação de logout.
O código compatível para o IE é o seguinte:
$ .ajax ({url: logouturl, crossDomain: true, assíncrono: false, datatype: "jsonp"});O CrossDomain é definido como TRUE para resolver problemas de acesso aos domínios cruzados. Se esse problema não existir, essa propriedade poderá ser ignorada. É melhor definir o atributo assíncrono para false, e True também está ok. Datatype: a propriedade "jsonp" também é usada para resolver problemas de acesso aos domínios cruzados. É usado em conjunto com o cruzamento. Não há problema de domínio cruzado. Essas duas propriedades podem ser omitidas.
O código acima foi testado em IE9, Chrome27 e Firefox21.
O exposto acima é a breve discussão que o editor traz para você sobre a janela.OnBeforeUnload () O evento chama Ajax (título). Espero que todos suportem wulin.com ~