В современных браузерах и 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);
}