ในปัจจุบันเบราว์เซอร์และ 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
ซึ่งจะไม่โหลดหน้าเว็บอีกครั้ง นั่นคือวิธีที่แองกูลาร์ใช้ทำสปาตามแฮชแท็ก ...
การเปลี่ยน#
เป็นเรื่องง่ายทำเช่น:
window.location.hash = "example";
และคุณสามารถตรวจจับได้ดังนี้:
window.onhashchange = function () {
console.log("#changed", window.location.hash);
}