HTML5 역사 사양은 황당하다.
history.pushState()
popstate
이벤트를 전달 하거나 자체적으로 새 페이지를로드 하지 않습니다 . 그것은 단지 상태를 역사로 밀어 넣는 것입니다. 이것은 단일 페이지 응용 프로그램에 대한 "실행 취소"기능입니다. popstate
이벤트 를 수동으로 전달 하거나 history.go()
새 상태로 이동하는 데 사용해야 합니다. 아이디어는 라우터가 popstate
이벤트를 듣고 탐색 할 수 있다는 것입니다.
참고할 사항 :
history.pushState()
및 history.replaceState()
전달하지 않는 popstate
이벤트를.
history.back()
, history.forward()
브라우저의 뒤로 및 앞으로 버튼은 popstate
이벤트를 전달 합니다.
history.go()
및 history.go(0)
전체 페이지를 다시로드를하고 전달하지 않는 popstate
이벤트를.
history.go(-1)
(뒤로 1 페이지) 및 history.go(1)
(앞으로 1 페이지)는 디스패치 popstate
이벤트를 수행 합니다.
이와 같은 히스토리 API를 사용하여 새 상태를 푸시하고 popstate 이벤트를 전달할 수 있습니다.
history.pushState({message:'New State!'}, 'New Title', '/link');
window.dispatchEvent(new PopStateEvent('popstate', {
bubbles: false,
cancelable: false,
state: history.state
}));
그런 다음 popstate
라우터 로 이벤트를 수신하십시오 .