У сучасних браузерах та 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);
}