2010-07-22 3 views
2

원하는 작업 : 클라이언트에서 "OnBeforeUnload"이벤트를 감지하면 세션을 삭제합니다. 나는 시간의 100 %를 발사하지 않는다는 것을 안다. (90 % 정확도는 나를 위해 잘 작동한다.)onBeforeUnload - Ajax없이 서버 측 함수를 호출하는 방법

Here 나는이 시스템을 ajax로하는 방법을 보았지만,이 시스템은 ajax로 분해된다. 나는 사용할 수 없다. 조금도.

나는 그것을하는 방법을 찾고 있습니다

답변

1

즉, 할 수 없습니다. 사용자의 브라우저 인질로 잡을 수는 없습니다. 원하는대로 할 수 있다면 악용 사례로 사용할 수 있습니다 (예 : 페이지 이탈시 리디렉션). AJAX는 서버 측 호출을위한 유일한 옵션이며, 명시한대로 신뢰할 수 없습니다.

+0

나는 브라우저를 격리하고 싶지는 않지만 ... 매우 쉽습니다. OnBeforeUnload 이벤트 후에 경고, 확인 또는 리다이렉션 만 실행하십시오. 나는 Firefox/IE 7에서 내 컴퓨터에서이 작업을 수행했습니다. 하지만 그 작업을 원하지 않습니다. 마지막 액션으로 서버에 플래그를 보내서 세션을 종료하고 싶습니다. 각 세션은 7MB 이상이며 사용자가 브라우저를 닫으면 해제해야합니다. –

+0

브라우저가 충돌하면 어떻게됩니까? 인터넷 연결이 끊어지면 어떻게해야합니까? JS가 처음에 활성화되지 않으면 어떻게해야합니까? 사용자가 떠날 때 감지하는 것을 잊어라. 비활성 세션을 주기적으로 정리하면됩니다. – Quentin

+0

@Lynx - 서버에 연결하는 두 가지 방법이 거기에 리디렉션됩니다. AJAX (이 시점에서 새 요소에서 GET 요청을 만들 수 없습니다). 모든 플랫폼이 세션을 종료하고 거의 모든 세션이 세션을 종료합니다. ASP.Net도 별다른 차이가 없으므로 기본적으로 20 분입니다. 서버 측 정리를 고수한다면, 모든 사람이 이렇게하는 이유가 있습니다. 가능하다면 그렇게되었을 것이라고 생각하지 않습니까? 또한 세션은 브라우저 창에 고유하지 않으며 탭간에 공유됩니다. 다른 탭을 열면 어떻게됩니까? 이 방법으로도 해당 탭을 삭제할 수 있습니다. –

1

"onBeforeUnload"중에이 작업을 수행 할 수 있는지는 잘 모르겠지만 시도해 볼 수는 있습니다. 단지 빈 이미지를 반환 서버 측에서

<img src="yourscript?param1=value1&param2=value2" /> 

:
당신에게 같은 웹 페이지를 이미지를 주입한다.

0

아마도 호출을 AsynchronousJAX가 아닌 후크해야 할 것입니다.

관련 문제