ข้อมูลจำเพาะประวัติศาสตร์ HTML5เป็นโวหาร
history.pushState()ไม่ได้ส่งpopstateเหตุการณ์หรือโหลดหน้าใหม่ด้วยตัวเอง มันหมายถึงการผลักดันสถานะในประวัติศาสตร์เท่านั้น นี่คือคุณสมบัติ "เลิกทำ" สำหรับแอปพลิเคชันหน้าเดียว คุณต้องส่งpopstateเหตุการณ์ด้วยตนเองหรือใช้history.go()เพื่อนำทางไปยังสถานะใหม่ แนวคิดคือเราเตอร์สามารถฟังpopstateเหตุการณ์และนำทางสำหรับคุณ
บางสิ่งที่ควรทราบ:
history.pushState()และhistory.replaceState()อย่าส่งpopstateเหตุการณ์
history.back(),, history.forward()และปุ่มย้อนกลับและไปข้างหน้าของเบราว์เซอร์ทำการจัดส่งpopstateกิจกรรม
history.go()และhistory.go(0)ทำการโหลดหน้าเต็มและไม่ส่งpopstateเหตุการณ์
history.go(-1)(ด้านหลัง 1 หน้า) และhistory.go(1)(ไปข้างหน้า 1 หน้า) ทำการส่งpopstateเหตุการณ์
คุณสามารถใช้ประวัติ API เช่นนี้เพื่อผลักดันสถานะใหม่และส่งเหตุการณ์ป๊อบสเตท
history.pushState({message:'New State!'}, 'New Title', '/link');
window.dispatchEvent(new PopStateEvent('popstate', {
bubbles: false,
cancelable: false,
state: history.state
}));
จากนั้นฟังpopstateกิจกรรมด้วยเราเตอร์