Modern tarayıcılarda ve HTML5'te , pushState
pencerede 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);
}