> 웹 프론트엔드 > JS 튜토리얼 > JavaScript를 사용하여 페이지를 새로 고치지 않고 URL 해시를 제거하는 방법은 무엇입니까?

JavaScript를 사용하여 페이지를 새로 고치지 않고 URL 해시를 제거하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-29 15:00:13
원래의
574명이 탐색했습니다.

How to Remove a URL Hash Without Refreshing the Page Using JavaScript?

JavaScript를 사용하여 페이지 새로 고침 없이 URL에서 해시 제거

"http://example.com#something"과 같은 URL을 발견하는 경우 끝에 해시 구성요소(#)가 있으면 페이지를 새로 고치지 않고 이를 제거하는 것이 어려울 수 있습니다. "window.location.hash"를 빈 문자열로 설정하는 기존 방법은 해시 기호 자체를 제거하는 데 실패합니다.

해결책: HTML5 History API

최신 브라우저는 다음을 제공합니다. HTML5 History API를 통한 솔루션입니다. "history.pushState()" 기능을 활용하면 페이지 새로 고침을 실행하지 않고도 새 URL을 표시하도록 위치 표시줄을 수정할 수 있습니다.

function removeHash() {
    history.pushState("", document.title, window.location.pathname
                                                       + window.location.search);
}
로그인 후 복사

이 방법은 현재 및 Chrome, Firefox, Safari, Opera 및 Internet Explorer 10 이상을 포함한 호환 브라우저.

지원되지 않는 경우 우아한 성능 저하 브라우저

History API를 지원하지 않는 브라우저의 경우 우아한 성능 저하 스크립트를 사용할 수 있습니다.

function removeHash() {
    var scrollV, scrollH, loc = window.location;
    if ("pushState" in history)
        history.pushState("", document.title, loc.pathname + loc.search);
    else {
        // Preserve current scroll position
        scrollV = document.body.scrollTop;
        scrollH = document.body.scrollLeft;

        loc.hash = "";

        // Restore scroll position
        document.body.scrollTop = scrollV;
        document.body.scrollLeft = scrollH;
    }
}
로그인 후 복사

이 접근 방식은 다양한 브라우저 간의 호환성을 보장하며 원인 페이지

참고:

  • 새 항목을 추가하는 대신 현재 기록 항목을 바꾸려면 "pushState()" 대신 "replaceState()"를 사용하세요. ".
  • 해시 제거는 브라우저 지원에 따라 다릅니다. 그러나 이 솔루션은 지원되는 브라우저와 지원되지 않는 브라우저를 모두 포괄하는 포괄적인 접근 방식을 제공합니다.

위 내용은 JavaScript를 사용하여 페이지를 새로 고치지 않고 URL 해시를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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