2011-10-13 2 views
0

브라우저를 닫거나 주소 표시 줄에 새 URL을 입력하거나 다른 도메인으로 리디렉션되는 링크를 클릭하는 등 사용자가 페이지를 떠날 때이를 감지 할 수있는 방법이 있습니까? 서버 I이었다 클라이언트 측 사용자가 페이지를 떠나기 전에 서버와 동기화하고 세션을 지우는 방법은 무엇입니까?

  • 명확 서버 세션
  • 에있는 일부 데이터

    • 동기화 :

      이의 주요 목적은 다음과 같은 몇 가지 작업을 수행하는 것 창 언로드 및 beforeunload 이벤트를 시도하고 같은 다른 질문을 읽고 : Best way to detect when a user leaves a web page? // Is there any way to know that user leaving a page with asp.net?하지만 나는 대답을 찾지 못했습니다. 기대할 것이다. 여기

      단순화 JS 내가 노력했다 이해하는 니펫 : 나는 사용자 잎하기 전에 확인의 종류를 표시하지 않으

      window.onunload = function(){ 
          if (theConditionThatINeed){ 
           doThings(); 
           SyncWithServerAndAbandonSession(url, localObjects); 
          } 
          else { 
           doNothing(); 
          } 
      } 
      

      , 내가 생각하는 그 onbeforeunload원 ' 도와주세요.

      "그럴 방법이 없습니다"라고 가정하면 원하는 동기화 및 세션 지우기를 수행하기 위해 권장되는 방법은 무엇입니까? 내가 지원

      주요 브라우저는 IE이다> = 7

    답변

    1

    이미 읽으면서, 사용자가 페이지를 잎 여부를 감지 할 안정적으로 할 수 없습니다. 일반적으로 클라이언트 측에 unsynced 상태를 저장하는 것은 좋지 않습니다. 브라우저는 쉽게 닫히거나 손상됩니다.

    사용자가 귀하의 페이지에서 어떤 작업을 수행 할 경우를 대비하여 자바 스크립트를 통해 자신에게 아약스 Keepalive 메시지를 보낼 수 있습니다. 다시 말하지만, 매우 신뢰할 수없고 낭비적이고 해킹되었습니다. 짧은 시간이 지난 후 자동 동기화됩니다.

    REST 웹 응용 프로그램을 살펴보십시오. 이 개념은 흥미 롭고, 매우 표면적으로 말하면 서버에 상태 정보를 보관하는 것을 어렵게 만듭니다. 이것을 클라이언트에도 적용 할 수 있습니다.

    이렇게하면 대개 URL에 상태 정보가 유지됩니다. URL은 서버에 요청을 처리하기 위해 알아야하는 모든 것을 알려주며, 이전 활동에 대한 메모리 (세션)가 필요하지 않아야합니다. 세션에서 사용자 식별 정보 만 유지하려고합니다. 나는 이것도 없애 겠지만, 일부 도구와 라이브러리는 세션에서 사용자를 필요로한다.

    관련 문제