>웹 프론트엔드 >JS 튜토리얼 >웹 개발에서 페이지 새로 고침과 브라우저 종료를 확실하게 구별하는 방법은 무엇입니까?

웹 개발에서 페이지 새로 고침과 브라우저 종료를 확실하게 구별하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 22:22:011046검색

How to Reliably Differentiate Between Page Refreshes and Browser Closures in Web Development?

브라우저 작업 차별화: 새로 고침과 닫기

웹 개발에서 ONUNLOAD 이벤트 중에 페이지 새로 고침과 브라우저 닫기를 구별하는 것이 어려울 수 있습니다. 다음은 HTML5 로컬 스토리지 및 클라이언트/서버 통신을 활용하는 솔루션입니다.

  1. 페이지 언로드 시:

    • onunload 이벤트 핸들러 구현 myUnload()와 같은 창에서.
    • 로컬 저장소 플래그 myUnloadEventFlag를 현재 타임스탬프로 설정합니다.
    • 잠시 후에 연결 끊김(예: 브라우저 종료)이 발생할 수 있음을 서버에 알립니다. AJAX 호출(askServerToDisconnectUserInAFewSeconds())을 통해 초.
  2. 페이지 로드 시:

    • onload 이벤트 핸들러 구현 myLoad()와 같은 본문에서.
    • 로컬 저장소에서 myUnloadEventFlag를 검색하여 현재 타임스탬프와 비교합니다.
    • 이전 언로드 이벤트와 현재 언로드 이벤트 사이의 기간이 10 미만인 경우 초이면 다시 로드될 가능성이 높습니다(askServerToCancelDisconnectionRequest()를 통해 연결 해제 요청을 취소).
    • 시간이 10초보다 길면 브라우저가 종료될 가능성이 높습니다.
  3. 서버측:

    • 연결 해제 요청을 목록으로 수집하고 타이머 스레드(예: 20초마다)를 설정하여 목록을 검사합니다.
    • 연결 해제 요청 시간이 초과되면(예: 5초 후) 사용자 연결을 해제합니다.
    • 취소 요청이 수신되면 해당 연결 해제 요청을 목록에서 제거합니다.

이 접근 방식은 탭/창 닫기, 링크 따라가기, 제출된 양식을 구별할 수도 있습니다. HTML5 로컬 저장소를 지원하는 브라우저에 적용 가능하며 커서 위치와 같은 특정 이벤트 속성에 의존하는 것보다 더 안정적입니다.

위 내용은 웹 개발에서 페이지 새로 고침과 브라우저 종료를 확실하게 구별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.