최신 브라우저 및 HTML5 에는 pushState
창에서 호출되는 메소드 가 있습니다 history
. 그러면 URL이 변경되어 페이지를로드하지 않고 기록으로 푸시됩니다.
다음과 같이 사용할 수 있습니다. 1) 상태 객체 2) 제목과 URL) :
window.history.pushState({page: "another"}, "another page", "example.html");
URL은 변경되지만 페이지를 다시로드하지는 않습니다. 또한 페이지가 존재하는지 확인하지 않으므로 URL에 반응하는 JavaScript 코드를 사용하면 이와 같이 작업 할 수 있습니다.
또한 history.replaceState()
새로운 기록을 만드는 대신 현재 기록을 수정한다는 점을 제외하고는 정확히 동일한 기능을 수행합니다!
또한 history.pushState
존재 여부를 확인하는 함수를 만들고 다음과 같이 나머지를 계속 수행 할 수 있습니다 .
function goTo(page, title, url) {
if ("undefined" !== typeof history.pushState) {
history.pushState({page: page}, title, url);
} else {
window.location.assign(url);
}
}
goTo("another page", "example", 'example.html');
또한 당신은 변경할 수 있습니다 #
에 대한 <HTML5 browsers
페이지를 다시로드하지 것이다. 이것이 Angular가 해시 태그에 따라 SPA 를 수행하는 방식입니다 ...
다음 #
과 같이 변경하는 것은 매우 쉽습니다.
window.location.hash = "example";
그리고 당신은 이것을 다음과 같이 감지 할 수 있습니다 :
window.onhashchange = function () {
console.log("#changed", window.location.hash);
}