Jadi sekarang HTML5 memperkenalkan history.pushStateuntuk mengubah riwayat browser, situs web mulai menggunakan ini dalam kombinasi dengan Ajax alih-alih mengubah pengidentifikasi fragmen URL.
Sayangnya itu berarti bahwa panggilan tersebut tidak dapat dideteksi lagi oleh onhashchange.
Pertanyaan saya adalah: Apakah ada cara yang dapat diandalkan (hack?;)) Untuk mendeteksi kapan situs web menggunakan history.pushState? Spesifikasinya tidak menyatakan apa pun tentang peristiwa yang dimunculkan (setidaknya saya tidak dapat menemukan apa pun).
Saya mencoba membuat fasad dan diganti window.historydengan objek JavaScript saya sendiri, tetapi tidak memiliki efek sama sekali.
Penjelasan lebih lanjut: Saya sedang mengembangkan add-on Firefox yang perlu mendeteksi perubahan ini dan bertindak sesuai.
Saya tahu ada pertanyaan serupa beberapa hari yang lalu yang menanyakan apakah mendengarkan beberapa acara DOM akan efisien tetapi saya lebih suka tidak mengandalkan itu karena peristiwa ini dapat dihasilkan karena banyak alasan berbeda.
Memperbarui:
Berikut ini adalah jsfiddle (gunakan Firefox 4 atau Chrome 8) yang menunjukkan bahwa onpopstatetidak terpicu ketika pushStatedipanggil (atau saya melakukan sesuatu yang salah? Jangan ragu untuk memperbaikinya!).
Pembaruan 2:
Masalah (sisi) lain adalah yang window.locationtidak diperbarui saat menggunakan pushState(tapi saya membaca tentang ini sudah ada di sini pada SO saya pikir).
historyobjek. Itu mungkin tidak perlu dalam kasus ini.