WEB/JavaScript

[JavaScript] Web APIs - Location, History

devOhzl 2024. 7. 1. 11:39

Location

 - 현재 브라우저에 표시된 HTML 문서의 URL 또는 관련 정보 (URL의 프로토콜, 호스트, 포토번호 등의 정보)를 반환하거나 제어한다.

- window 객체의 일부이고 window.location 속성을 통해 접근할 수 있다.(window는 생략 가능)

 

📌 속성

.href 전체 URL 주소
.protocol 프로토콜 정보 (http/https)
.hostname 도메인 이름
.pathname 도메인 이후 하위 경로
.host  포트 번호를 포함하는 도메인 이름
.port 포트 번호 - http이면 80포트 생략 가능. 프로토콜이 https이면 443포트는 생략 가능 
.hash  해시 정보 ( 페이지의 ID )

 

📌 함수

.assign(주소)  해당 주소로 페이지 이동 ( 뒤로가기 O )
.replace(주소) 현재 페이지 히스토리를 제거하고 해당 주소로 페이지 이동 ( 뒤로가기 X )
.reload(강력) 페이지 새로고침, 인수로 true 를 전달하면 강력새로고침이 된다.

 

📌 hash

우리가 해당하는 페이지를 새로고침하지 않고도 페이지 내부에서 다른 영역으로 이동할 때 쓸 수 있다.

a태그를 눌렀을 때, url 뒤에 '#설명'이라고 해쉬 내용이 추가되며 '#설명' 영역으로 스크롤 된다.

location의 hash에는 '#설명'이 주소에서 쓸 수 있는 문자로 인코딩돼서 출력된다.

History

브라우저의 히스토리(세션 기록) 정보를 반환하거나 제어한다.

📌 속성

.length 등록된 히스토리 개수
.scrollRestoration 히스토리 탐색 시 스크롤 위치 복원 여부 확인 및 지정
.state  현재 히스토리에 등록된 데이터 (상태)


📌 함수

.back() 뒤로 가기
.forward() 앞으로 가기
.go(위치) 현재 페이지 기준 특정 히스토리의 위치로 이동

 - go(2) : 앞으로 2번 이동

 - go(-2) : 뒤로 2번 이동
.pushStaet(상태, 제목, 주소) 히스토리에 상태 및 주소를 추가한다.

 - 하나의 새로운 히스토리로 기록이 된다. 
 - location.assign()과 같이 페이지가 새로고침 되지 않는다.
.replaceState(상태, 제목, 주소) 현재 히스토리의 상태 및 주소를 교체한다.

💡 모든 브라우저(safari 제외)는 '제목' 옵션을 무시하므로 빈 문자열을 넣어준다.

📌예시

 html id 속성의 값과 매칭할 수 있는 주소를 href에 #으로 시작하는 해쉬로 추가를 하게 되면 a태그를 선택했을 때 현재 페이지 내부에서 해당하는 요소의 위치로 이동을 할 수 있다.

 

제공하는 페이지는 1개이지만 새로고침을 하지 않아도 페이지가 교체되듯이 보여줄 수 있다. 👉 SPA

 

 

참고

패스트캠퍼스 프론트엔드 웹 개발의 모든 것

[JavaScript (15)] Javascript Location, History 객체 (hash, host, href, replace 등) (tistory.com)