Jadi sekarang HTML5 memperkenalkan history.pushState
untuk 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.history
dengan 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 onpopstate
tidak terpicu ketika pushState
dipanggil (atau saya melakukan sesuatu yang salah? Jangan ragu untuk memperbaikinya!).
Pembaruan 2:
Masalah (sisi) lain adalah yang window.location
tidak diperbarui saat menggunakan pushState
(tapi saya membaca tentang ini sudah ada di sini pada SO saya pikir).
history
objek. Itu mungkin tidak perlu dalam kasus ini.