В современных браузерах и HTML5 существует метод, называемый pushState
для окна history
. Это изменит URL-адрес и добавит его в историю без загрузки страницы.
Вы можете использовать его следующим образом: 3) 1) состояние объекта 2) заголовок и URL):
window.history.pushState({page: "another"}, "another page", "example.html");
Это изменит URL, но не перезагрузит страницу. Кроме того, он не проверяет, существует ли страница, поэтому, если вы делаете некоторый код JavaScript, который реагирует на URL, вы можете работать с ними следующим образом.
Также есть 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);
}