Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML onhashchange 이벤트 속성 완벽 가이드 – URL 해시 변경 감지 방법

HTML onhashchange 이벤트 속성은 HTML 문서에서 URL의 앵커(해시) 부분이 변경될 때 자동으로 실행되는 이벤트 핸들러입니다. 예를 들어, 사용자가 페이지 내 링크를 클릭하거나 JavaScript로 location.hash 값을 수정하여 URL 뒤의 # 이후 부분이 바뀌면 이 이벤트가 발생합니다.

문법(Syntax)

onhashchange 속성의 기본 문법은 다음과 같습니다.

<tagname onhashchange="script"></tagname>

여기서 tagname은 주로 <body> 태그에 적용되며, script에는 해시가 변경될 때 실행할 JavaScript 코드를 작성합니다.

예제(Example)

아래 예제는 버튼을 클릭하면 현재 URL에 새로운 해시를 설정하고, onhashchange 이벤트가 발생하면 배경색이 변경되는 동작을 보여줍니다.

<!DOCTYPE html>
<html>
<head>
<style>
    body {
        color: #000;
        height: 100vh;
        background-color: #FBAB7E;
        background-image: linear-gradient(62deg, #FBAB7E 0%, #F7CE68 100%);
        text-align: center;
    }
    .btn {
        background: #db133a;
        border: none;
        color: #fff;
        height: 2rem;
        padding: 8px 10px;
    }
</style>
</head>
<body onhashchange="hashChange()">
<h1>HTML onhashchange Event Attribute Demo</h1>
<button class="btn" onclick="change()">Set Hash</button>
<p class="msg"></p>
<script>
    function change() {
        location.hash = "newHashPart";
        document.querySelector('.msg').innerHTML = 'The hash part of the URL is: ' + location.hash;
    }
    function hashChange() {
        document.body.style.background = 'lightblue';
    }
</script>
</body>
</html>

실행 결과(Output)

위 코드를 실행하면 다음과 같은 화면이 나타납니다.

HTML onhashchange 이벤트 속성 완벽 가이드 – URL 해시 변경 감지 방법

[Set Hash] 버튼을 클릭하면 현재 URL에 새로운 해시(#newHashPart)가 설정되고, 화면에 출력되는 메시지를 통해 URL의 해시 부분이 어떻게 변경되었는지 확인할 수 있습니다.

HTML onhashchange 이벤트 속성 완벽 가이드 – URL 해시 변경 감지 방법

동작 원리 설명

이 예제의 핵심 동작 흐름은 다음과 같습니다.

1. 버튼 클릭: change() 함수가 호출되어 location.hash 값이 newHashPart로 설정됩니다.
2. 메시지 출력: 변경된 해시 값이 화면의 .msg 요소에 표시됩니다.
3. 이벤트 발생: URL의 해시가 변경되면서 onhashchange 이벤트가 트리거되고, hashChange() 함수가 실행되어 body의 배경색이 하늘색(lightblue)으로 바뀝니다.

참고 사항

- onhashchange 이벤트는 Internet Explorer 8 이상을 포함한 모든 주요 브라우저에서 지원됩니다.
- 이 이벤트는 window 객체 또는 body 태그에 주로 사용되며, JavaScript에서는 window.onhashchange 또는 addEventListener('hashchange', ...) 방식으로도 등록할 수 있습니다.
- SPA(Single Page Application)에서 페이지를 새로고침하지 않고 상태를 추적할 때 유용하게 활용됩니다.