13
จะรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงของประวัติผ่าน history.pushState ได้อย่างไร?
ดังนั้นตอนนี้ที่ HTML5 แนะนำhistory.pushStateให้เปลี่ยนประวัติเบราว์เซอร์เว็บไซต์เริ่มใช้สิ่งนี้ร่วมกับ Ajax แทนที่จะเปลี่ยนตัวระบุส่วนของ URL onhashchangeน่าเศร้าที่ว่าหมายความว่าสายที่ไม่สามารถตรวจสอบอีกต่อไปโดย คำถามของฉันคือ:มีวิธีที่เชื่อถือได้ (แฮก?;)) เพื่อตรวจสอบเมื่อเว็บไซต์ใช้history.pushState? ข้อมูลจำเพาะไม่ได้ระบุอะไรเกี่ยวกับเหตุการณ์ที่เกิดขึ้น (อย่างน้อยฉันก็ไม่พบอะไรเลย) ฉันพยายามสร้างซุ้มและแทนที่window.historyด้วยวัตถุ JavaScript ของตัวเอง แต่มันก็ไม่มีผลอะไรเลย คำอธิบายเพิ่มเติม:ฉันกำลังพัฒนาโปรแกรมเสริมของ Firefox ที่ต้องการตรวจจับการเปลี่ยนแปลงเหล่านี้และดำเนินการตามนั้น ฉันรู้ว่ามีคำถามคล้ายกันเมื่อไม่กี่วันที่ผ่านมาที่ถามว่าการฟังเหตุการณ์ DOMบางอย่างจะมีประสิทธิภาพหรือไม่ แต่ฉันก็ไม่เชื่อใจเพราะเหตุการณ์เหล่านี้สามารถสร้างขึ้นได้ด้วยเหตุผลหลายประการ ปรับปรุง: นี่คือ jsfiddle (ใช้ Firefox 4 หรือ Chrome 8) ที่แสดงว่าonpopstateไม่ถูกเรียกเมื่อpushStateมีการเรียก (หรือฉันทำสิ่งผิดปกติหรือไม่รู้สึกฟรีเพื่อปรับปรุง!) อัปเดต 2: ปัญหา (ด้าน) อีกอย่างwindow.locationคือไม่ได้รับการอัปเดตเมื่อใช้pushState(แต่ฉันได้อ่านเกี่ยวกับสิ่งนี้ที่นี่แล้วดังนั้นฉันคิดว่า)