history.length;
// 또는 window.history.length;
const totalPages = history.length;
// 또는 const totalPages = window.history.length;

console.log(totalPages); // 방문 기록 개수를 정수로 출력
if (history.length === 1) {
    console.log("현재 창(또는 탭)에서 방문한 첫 번째 페이지입니다.");
}
history.go(n);
// 또는 window.history.back(n);
<button type="button" onclick="history.go(-1)">이전 페이지로 이동하기</button>
<!-- 또는 -->
<button type="button" onclick="window.history.go(-1)">이전 페이지로 이동하기</button>
<button type="button" id="back-btn">이전 페이지로 이동하기</button>

<script>
    const backBtn = document.getElementById("back-btn");
    
    backBtn.addEventListener("click", () => {
        history.go(-1);
        // 또는 window.history.go(-1);
    });
</script>
history.state;
// 또는 window.history.state;
const state = history.state;
// 또는 const state = window.history.state;

console.log(state);
if (history.state !== null) {
    console.log("상태 데이터가 존재합니다.");
} else {
    console.log("상태 데이터가 없습니다.");
}
history.pushState(state, unused)
history.pushState(state, unused, url)

// 또는
window.history.pushState(state, unused)
window.history.pushState(state, unused, url)
/* 초기 URL 예: https://www.example.com/ */

// 1. 상태 { page: 1 } 저장 + URL 변경
history.pushState({ page: 1 }, "", "/page-1");

console.log("현재 state:", history.state); // 출력: {page: 1}
// 현재 URL: https://www.example.com/page-1

// 2. 상태 { page: 2 } 저장 + URL 변경
history.pushState({ page: 2 }, "", "/page-2");

console.log("현재 state:", history.state); // 출력: {page: 2}
// 현재 URL: https://www.example.com/page-2

/* 3. 브라우저의 '뒤로 가기' 버튼을 누르면
      주소창은 다시 /page-1로 변하고,
      history.state는 { page: 1 }로 복원됩니다.
*/
history.replaceState(state, unused)
history.replaceState(state, unused, url)

// 또는
window.history.replaceState(state, unused)
window.history.replaceState(state, unused, url)
/* 현재 URL 예: https://www.example.com/ */

// 1. 상태 { page: 1 }을 가진 새로운 기록을 추가
history.pushState({ page: 1 }, "", "/page-1");

// 2. 현재 방문 기록 항목의 상태를 { page: 2 }로 교체 (새로운 기록이 추가되지 않음)
history.replaceState({ page: 2 }, "", "/page-2");

console.log("현재 상태:", history.state); // 출력: { page: 2 }
// 주소창 결과: https://www.example.com/page-2

/* 3. '뒤로 가기' 버튼을 누르면
      /page-1로 가지 않고, 
      최초 페이지인 https://www.example.com/ 로 바로 이동합니다.
*/
window.addEventListener("popstate", (event) => { })

window.onpopstate = (event) => { }
// 탭 전환 함수
function selectTab(tabName, shouldPushState = true) {
    // 실제 화면 갱신 로직 (예제에서는 콘솔 출력으로 대체)
    console.log(`현재 탭: ${tabName}`);

    // 새로운 방문 기록 추가
    if (shouldPushState) {
        history.pushState({ tab: tabName }, "", `?tab=${tabName}`);
    }
}

// 브라우저의 방문 기록이 변경되면 이전 탭 복원
window.addEventListener("popstate", () => {
    let tabToRestore = null;

    // 히스토리에 저장된 상태값이 있는지 확인 후 탭 설정
    if (history.state) {
        tabToRestore = history.state.tab;
    } else {
        tabToRestore = "home";
    }

    console.log(`복원된 탭: ${tabToRestore}`);

    // 방문 기록을 추가하지 않고 화면만 복원
    selectTab(tabToRestore, false);
});