Di browser modern dan HTML5 , ada metode yang disebut pushState
di jendela history
. Itu akan mengubah URL dan mendorongnya ke histori tanpa memuat halaman.
Anda dapat menggunakannya seperti ini, ini akan mengambil 3 parameter, 1) menyatakan objek 2) judul dan URL):
window.history.pushState({page: "another"}, "another page", "example.html");
Ini akan mengubah URL, tetapi tidak memuat ulang halaman. Juga, itu tidak memeriksa apakah halaman itu ada, jadi jika Anda melakukan beberapa kode JavaScript yang bereaksi terhadap URL, Anda dapat bekerja dengan mereka seperti ini.
Juga ada history.replaceState()
yang melakukan hal yang persis sama, kecuali itu akan mengubah sejarah saat ini daripada membuat yang baru!
Anda juga dapat membuat fungsi untuk memeriksa apakah history.pushState
ada, kemudian melanjutkan dengan yang lain seperti ini:
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');
Anda juga dapat mengubah #
untuk <HTML5 browsers
, yang tidak akan memuat ulang halaman. Itulah cara Angular menggunakan untuk melakukan SPA sesuai dengan ...
Mengubahnya #
cukup mudah, lakukan seperti:
window.location.hash = "example";
Dan Anda dapat mendeteksinya seperti ini:
window.onhashchange = function () {
console.log("#changed", window.location.hash);
}