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

HTML DOM HashChangeEvent(해시 변경 이벤트) 완벽 정리 - 속성, 문법, 예제까지

HTML DOM HashChangeEvent는 URL에서 '#'(해시) 부분이 변경될 때마다 발생하는 이벤트를 표현하기 위해 사용되는 인터페이스입니다. 웹 페이지에서 앵커 이동이나 SPA(싱글 페이지 애플리케이션)의 라우팅 처리 시 자주 활용됩니다.

HashChangeEvent의 주요 속성

HashChangeEvent는 다음과 같은 두 가지 속성을 제공합니다.

속성설명
newURL해시가 변경된 이후의 문서 URL을 반환합니다.
oldURL해시가 변경되기 이전의 문서 URL을 반환합니다.

문법(Syntax)

HashChangeEvent의 속성에 접근하는 기본 문법은 다음과 같습니다.

event.eventProperty

여기서 eventProperty는 위에서 설명한 newURL 또는 oldURL 중 하나입니다.

예제(Example)

버튼을 클릭하면 URL의 해시를 변경하고, 변경 전후의 URL을 화면에 출력하는 예제를 살펴보겠습니다.

<!DOCTYPE html>
<html>
<body onhashchange="showChange(event)">
<h1>HashChangeEvent example</h1>
<p>아래 버튼을 클릭하여 해시를 변경해 보세요</p>
<button onclick="changeHash()">CHANGE</button>
<p id="Sample"></p>
<script>
    function changeHash() {
        location.hash = "NEWHASH";
    }
    function showChange() {
        document.getElementById("Sample").innerHTML = "The url has been changed from " + event.oldURL + " to " + event.newURL;
    }
</script>
</body>
</html>

실행 결과(Output)

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

HTML DOM HashChangeEvent(해시 변경 이벤트) 완벽 정리 - 속성, 문법, 예제까지

CHANGE 버튼을 클릭하면 아래와 같이 변경 전후의 URL이 표시됩니다.

HTML DOM HashChangeEvent(해시 변경 이벤트) 완벽 정리 - 속성, 문법, 예제까지

코드 상세 분석

위 예제의 동작 원리를 단계별로 살펴보겠습니다.

1. CHANGE 버튼 생성

사용자가 클릭하면 changeHash() 메서드를 실행하는 버튼을 만듭니다.

<button onclick="changeHash()">CHANGE</button>

2. 해시 값 변경

changeHash() 메서드는 location 객체의 hash 속성을 “NEWHASH”로 변경합니다. location 객체는 현재 페이지의 URL 정보를 담고 있습니다.

function changeHash() {
    location.hash = "NEWHASH";
}

3. onhashchange 이벤트 핸들러 등록

해시가 변경되는 순간, body 태그에 연결된 onhashchange 이벤트 핸들러가 실행되며, 발생한 hashchange 이벤트 객체를 showChange() 함수로 전달합니다.

<body onhashchange="showChange(event)">

4. 변경 전후 URL 출력

showChange() 메서드는 전달받은 hashchange 이벤트를 활용해 oldURL 속성과 newURL 속성 값을 읽어, id가 “Sample”인 p 요소에 출력합니다.

function showChange() {
    document.getElementById("Sample").innerHTML = "The url has been changed from " + event.oldURL + " to " + event.newURL;
}

정리

HashChangeEvent는 URL의 해시(#) 변경을 감지할 수 있는 강력한 도구입니다. onhashchange 이벤트와 oldURL, newURL 속성을 조합하면 페이지를 새로고침하지 않고도 해시 변화에 반응하는 동적인 웹 애플리케이션을 쉽게 구현할 수 있습니다. 특히 탭 전환이나 클라이언트 사이드 라우팅을 구현할 때 유용하게 사용됩니다.