브라우저 작업 차별화: 새로 고침과 닫기
웹 개발에서 ONUNLOAD 이벤트 중에 페이지 새로 고침과 브라우저 닫기를 구별하는 것이 어려울 수 있습니다. 다음은 HTML5 로컬 스토리지 및 클라이언트/서버 통신을 활용하는 솔루션입니다.
-
페이지 언로드 시:
- onunload 이벤트 핸들러 구현 myUnload()와 같은 창에서.
- 로컬 저장소 플래그 myUnloadEventFlag를 현재 타임스탬프로 설정합니다.
- 잠시 후에 연결 끊김(예: 브라우저 종료)이 발생할 수 있음을 서버에 알립니다. AJAX 호출(askServerToDisconnectUserInAFewSeconds())을 통해 초.
-
페이지 로드 시:
- onload 이벤트 핸들러 구현 myLoad()와 같은 본문에서.
- 로컬 저장소에서 myUnloadEventFlag를 검색하여 현재 타임스탬프와 비교합니다.
- 이전 언로드 이벤트와 현재 언로드 이벤트 사이의 기간이 10 미만인 경우 초이면 다시 로드될 가능성이 높습니다(askServerToCancelDisconnectionRequest()를 통해 연결 해제 요청을 취소).
- 시간이 10초보다 길면 브라우저가 종료될 가능성이 높습니다.
-
서버측:
- 연결 해제 요청을 목록으로 수집하고 타이머 스레드(예: 20초마다)를 설정하여 목록을 검사합니다.
- 연결 해제 요청 시간이 초과되면(예: 5초 후) 사용자 연결을 해제합니다.
- 취소 요청이 수신되면 해당 연결 해제 요청을 목록에서 제거합니다.
이 접근 방식은 탭/창 닫기, 링크 따라가기, 제출된 양식을 구별할 수도 있습니다. HTML5 로컬 저장소를 지원하는 브라우저에 적용 가능하며 커서 위치와 같은 특정 이벤트 속성에 의존하는 것보다 더 안정적입니다.
위 내용은 웹 개발에서 페이지 새로 고침과 브라우저 종료를 확실하게 구별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!