2010-08-14 2 views
0

클라이언트가 페이지를 떠날 때 서버에 알릴 수 있습니까 (데이터가 약간있는 단일 HTTP 요청으로 응답은 중요하지 않음)?onunload 이벤트에서 서버 (XMLHttpRequest?)에 알리고 있습니까?

저는 실제로 자바 스크립트로 python-tornado 혜성 응용 프로그램을 사용하고 있습니다.이 응용 프로그램은 서버에 대한 요청 연결을 끊임없이 유지합니다 (닫히고 이벤트에서 다시 열립니다.) : https://launchpad.net/eftw).

나는 (FireBug와 함께) 이것을 디버깅하는 쉬운 방법을 찾지 못했습니다. 그것은 상당히 문제가됩니다.

아, 그리고 실제 코드 (이후 다소 가능한 이미 어쨌든) : http://bazaar.launchpad.net/~hoverhell/xftw/trunk/files

+0

오. 사실, 나는 어떤 대답도 받아 들일 수 없기 때문에 대부분의 경우 그렇게하지 않았다 (또는 실제로 응답을 놓친 사람은 거의 없었다). 응답에 대한 나의 완벽 함의 선호도를 낮춰야한다고 생각합니다 :) – HoverHell

+0

@ hell.orts.ru - Google을 통해 도착할 때 유효한 해결책을 찾는 것이 효과적입니다 (또는 적어도 이유에 대한 설명).) –

답변

4

당신은 브라우저 및 대기 시간에 따라 신뢰할 수있는 방법으로이 작업을 수행 할 수 없습니다, 당신의 XMLHttpRequest의 살해 될 가능성이 실제로 끝나기 전에.

브라우저 제조업체는 가능한 한 빨리 다음 페이지를 렌더링하려고합니다. onbeforeunloadonunload은 주변에 남겨진 변수를 신속하게 처리하기위한 정리 이벤트로, 기다릴 예정이 아니기 때문에 브라우저에서는 볼 수 없습니다. 최신 브라우저에서의 가비지 수집 또한 크게 향상 되었기 때문에 브라우저는 이러한 이벤트를 기다릴 이유가 훨씬 적습니다.

window.onbeforeunload 이벤트로 요청을 보낼 수는 있지만 서버에 전달됩니까? 아마도.

+0

안타깝게도 onbeforeunload 함수/상태 인 동안 XHR을 처리하지 않는 것 같습니다. 적어도 내 경우에는 그렇지 않았다. – HoverHell

+0

아, 실제로 작동합니다. 비동기 XHR. – HoverHell

+0

추가 정보 : 페이지를 닫을 때 일어나는 일들을 디버깅 할 수있는 방법이 있습니까? – HoverHell

관련 문제