종종 이에 대한 필요, 즉 특정 웹 페이지를 떠날 때 사용자가 반드시 로그 아웃을 클릭 할 필요는 없으므로 세션이 제 시간에 파괴되지 않습니다. 사용자가 페이지를 떠날 때 자동 로그 아웃 함수를 실현하려면 웹 페이지의 onbeforeunload 이벤트 처리 기능에서 로그 아웃 명령을 전송해야합니다. 이 장소는 주로 Ajax를 사용하여 구현됩니다. 때로는 도메인 크로스 도메인 액세스 문제도 포함됩니다. 이 장소에는 브라우저 호환성 문제가 있습니다.
이 요구 사항을 처리 할 때 브라우저의 두 가지 점이 있습니다.
1. 비 호환성 Ajax를 다룰 때 jQuery는 여기에서 해결하는 데 사용됩니다.
2. AJAX 요청을 보낼 때 비 호환성
기본 코드는 다음과 같습니다.
function logout () {var logouturl = "xxxx"; // URL은 사용자를 로그 아웃하는 데 사용됩니다 (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 () {logout (); };코드 설명 :
Firefox는 JS를 처리 할 때 보안 수준이 높습니다. JS가 IE 및 Chrome에서 사용할 수있는 많은 권한은 Friex에서 제한되어 있으므로
if (userAgent.indexof ( "msie")>-1) {// IE} else {// firefox chrome}이 코드는 현재 브라우저 유형을 결정합니다.
Firefox 및 Chrome에 대한 호환 코드는 다음과 같습니다.
$ .ajax ({url : logouturl, async : false});비동기는 false로 설정해야합니다. 즉, 동기식이며 실제 비동기 방법을 사용할 수 없습니다. 그렇지 않으면 요청을 전송할 수 없습니다. 실제로 Chrome은 다음 IE 코드에도 적합합니다. 브라우저가 꺼지면 로그 아웃 명령이 자동으로 전송됩니다. 그러나 브라우저의 새로 고침 버튼을 클릭하면 사용자를 자동으로 로그 아웃 할 수 있습니다. Chrome은 위의 코드 줄만 사용하여 로그 아웃 요청을 발행 할 수 있습니다.
IE에 대한 호환 코드는 다음과 같습니다.
$ .ajax ({url : logouturl, crossdomain : true, async : false, datatype : "jsonp"});CrossDomain은 크로스 도메인 액세스 문제를 해결하기 위해 충실합니다. 이 문제가 존재하지 않으면이 속성을 무시할 수 있습니다. 비동기 속성을 False로 설정하는 것이 가장 좋으며 True도 괜찮습니다. 데이터 유형 : "JSONP"속성은 또한 도메인 크로스 도메인 액세스 문제를 해결하는 데 사용됩니다. Crossdomain과 함께 사용됩니다. 교차 도메인 문제는 없습니다. 이 두 속성은 생략 할 수 있습니다.
상기 코드는 IE9, Chrome27 및 Firefox21에서 테스트되었습니다.
위는 편집자가 Window.onbeforeunload () 이벤트가 Ajax (Title)에 대해 귀하에게 가져 오는 간단한 토론입니다. 모두가 wulin.com을 지원하기를 바랍니다