브라우저에서 뒤로 버튼 클릭을 정확하게 감지하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-22 12:47:00
원래의
665명이 탐색했습니다.

How to Accurately Detect Back Button Clicks in Browsers?

향상된 정확도로 브라우저에서 뒤로 버튼 클릭 감지

소개:

뒤로 버튼 클릭 식별은 브라우저 구현에 필수적입니다. 탐색 기록 추적. 다양한 접근 방식이 존재하지만 실제 뒤로 버튼 클릭과 유사한 이벤트를 트리거하는 다른 브라우저 작업을 구별하는 것이 중요합니다.

배경:

일반적인 접근 방식 중 하나는 창을 사용하는 것입니다. .onbeforeunload 이벤트 리스너는 사용자가 페이지를 닫거나 다른 페이지로 이동하려고 할 때 실행됩니다. 그러나 이 이벤트는 F5 키를 누르거나 페이지를 다시 로드하는 등의 작업에서도 트리거되어 오탐지로 이어집니다.

해결책:

이 문제를 해결하려면 더 정교한 솔루션이 필요합니다. 이 솔루션은 탐색 기록을 보다 세밀하게 제어할 수 있는 History.pushState 및 window.onpopstate 메소드를 활용합니다.

구현:

다음 코드 조각은 구현을 보여줍니다.

<code class="js">window.onload = function () {
    if (typeof history.pushState === "function") {
        history.pushState("jibberish", null, null);
        window.onpopstate = function () {
            history.pushState('newjibberish', null, null);
            // Handle back (or forward) buttons here
            // Will NOT handle refresh, use onbeforeunload for this.
        };
    } else {
        var ignoreHashChange = true;
        window.onhashchange = function () {
            if (!ignoreHashChange) {
                ignoreHashChange = true;
                window.location.hash = Math.random();
                // Detect and redirect change here
                // Works in older Firefox and Internet Explorer 9
                // * it does mess with your hash symbol (anchor?) pound sign
                // delimiter on the end of the URL
            } else {
                ignoreHashChange = false;
            }
        };
    }
}</code>
로그인 후 복사

설명:

이 코드는 History.pushState를 사용하여 페이지를 다시 로드하지 않고 브라우저 기록을 업데이트합니다. 그런 다음 사용자가 뒤로 또는 앞으로 버튼을 클릭할 때 트리거되는 window.onpopstate 이벤트에 바인딩됩니다.

history.pushState를 지원하는 브라우저에서 이 접근 방식은 다시 로드 이벤트를 제외하고 뒤로 버튼 클릭을 정확하게 감지합니다. 이전 브라우저의 경우 코드는 해시 변경에 따른 대체 방법을 사용하므로 파운드 기호 처리에 약간의 제한이 발생합니다.

결론:

이 향상된 접근 방식은 다음을 보장합니다. 브라우저에서 뒤로 버튼 클릭을 정확하게 감지하여 window.onbeforeunload만 사용하는 제한을 제거합니다. 탐색 기록을 추적하고 사용자 경험을 향상시키기 위한 안정적인 솔루션을 개발자에게 제공합니다.

위 내용은 브라우저에서 뒤로 버튼 클릭을 정확하게 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿