Satu-satunya cara untuk benar-benar melakukan ini (dan adalah bagaimana 'reallysimplehistory' melakukan ini), adalah dengan menetapkan interval yang terus memeriksa hash saat ini, dan membandingkannya dengan apa yang sebelumnya, kami melakukan ini dan membiarkan pelanggan berlangganan untuk berubah acara yang kami jalankan jika hash berubah .. itu tidak sempurna tetapi browser benar-benar tidak mendukung acara ini secara asli.
Perbarui untuk menjaga agar jawaban ini tetap segar:
Jika Anda menggunakan jQuery (yang hari ini harus agak mendasar untuk sebagian besar) maka solusi yang bagus adalah dengan menggunakan abstraksi yang jQuery berikan kepada Anda dengan menggunakan sistem kejadiannya untuk mendengarkan acara hashchange pada objek jendela.
$(window).on('hashchange', function() {
//.. work ..
});
Yang menyenangkan di sini adalah Anda dapat menulis kode yang tidak perlu khawatir tentang dukungan hashchange, namun Anda DO perlu melakukan beberapa keajaiban, dalam bentuk fitur jQuery yang agak kurang dikenal jQuery acara khusus .
Dengan fitur ini Anda pada dasarnya menjalankan beberapa kode pengaturan untuk acara apa pun, pertama kali seseorang mencoba menggunakan acara dengan cara apa pun (seperti mengikat ke acara).
Dalam kode pengaturan ini Anda dapat memeriksa dukungan browser asli dan jika browser tidak mengimplementasikannya secara native, Anda dapat mengatur timer tunggal untuk melakukan polling untuk perubahan, dan memicu acara jQuery.
Ini benar-benar melepaskan ikatan kode Anda dari kebutuhan untuk memahami masalah dukungan ini, pelaksanaan acara khusus semacam ini sepele (untuk mendapatkan versi kerja 98% sederhana), tetapi mengapa melakukan itu ketika orang lain sudah melakukannya .