>웹 프론트엔드 >JS 튜토리얼 >다시 로드하지 않고 JavaScript에서 URL의 해시를 쉽게 제거하는 방법은 무엇입니까?

다시 로드하지 않고 JavaScript에서 URL의 해시를 쉽게 제거하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-30 04:11:10419검색

How to Effortlessly Remove a URL's Hash in JavaScript Without Reloading?

JavaScript를 사용하여 손쉽게 URL 해시 제거

Q: http://example.com#something과 같은 URL이 있는데, 페이지를 새로 고치지 않고 #something을 제거하고 싶습니다. "window.location.hash = ''" 사용이 작동하지 않았습니다.

A: HTML5 History API는 우아한 솔루션을 제공합니다. 다음은 트릭을 수행하는 JavaScript 함수입니다.

function removeHash () {
    history.pushState("", document.title, window.location.pathname
                                                       + window.location.search);
}

이 기능은 Chrome, Firefox, Safari, Opera, IE 10과 같은 주요 브라우저에서 작동합니다.

이 기능을 사용하지 않는 브라우저의 경우 History API를 지원하지 않습니다.

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

        loc.hash = "";

        // Restore the scroll offset to prevent flickering
        document.body.scrollTop = scrollV;
        document.body.scrollLeft = scrollH;
    }
}

이 솔루션은 보편적으로 호환되지 않을 수 있지만 History API를 지원하지 않는 브라우저에 대한 점진적인 성능 저하를 제공합니다.

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

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