Modern tarayıcılarda ve HTML5'te , pushStatepencerede adı verilen bir yöntem vardır history. Bu, URL'yi değiştirir ve sayfayı yüklemeden geçmişe iter.
Bu şekilde kullanabilirsiniz, 3 parametre, 1) durum nesnesi 2) başlık ve bir URL) alacaktır:
window.history.pushState({page: "another"}, "another page", "example.html");
Bu URL'yi değiştirir, ancak sayfayı yeniden yüklemez. Ayrıca, sayfanın var olup olmadığını kontrol etmez, bu nedenle URL'ye tepki veren bir JavaScript kodu yaparsanız, onlarla bu şekilde çalışabilirsiniz.
Ayrıca history.replaceState(), tam olarak aynı şeyi yapan şey var, ancak yeni bir tarih oluşturmak yerine mevcut geçmişi değiştirecek!
Ayrıca var olup olmadığını kontrol etmek için bir işlev oluşturabilir history.pushState, ardından geri kalanını şu şekilde devam ettirebilirsiniz :
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');
Ayrıca , sayfayı yeniden yüklemeyecek olan #for öğesini de değiştirebilirsiniz <HTML5 browsers. Angular, hashtag'e göre SPA yapmak için bu şekilde kullanır ...
Değiştirmek #oldukça kolaydır, şöyle yapmak:
window.location.hash = "example";
Ve bunu şu şekilde tespit edebilirsiniz:
window.onhashchange = function () {
console.log("#changed", window.location.hash);
}