Cách duy nhất để thực sự làm điều này (và là cách 'reallysimplehistory' thực hiện điều này), bằng cách đặt một khoảng thời gian tiếp tục kiểm tra hàm băm hiện tại và so sánh nó với những gì trước đây, chúng tôi làm điều này và cho phép người đăng ký đăng ký thay đổi sự kiện chúng tôi kích hoạt nếu hàm băm thay đổi .. nó không hoàn hảo nhưng các trình duyệt thực sự không hỗ trợ sự kiện này nguyên bản.
Cập nhật để giữ cho câu trả lời này mới:
Nếu bạn đang sử dụng jQuery (mà ngày nay sẽ có phần nền tảng nhất) thì một giải pháp hay là sử dụng sự trừu tượng mà jQuery mang lại cho bạn bằng cách sử dụng hệ thống sự kiện của nó để lắng nghe các sự kiện băm trên đối tượng cửa sổ.
$(window).on('hashchange', function() {
//.. work ..
});
Điều thú vị ở đây là bạn có thể viết mã mà không cần phải lo lắng về hỗ trợ hashchange, tuy nhiên bạn KHÔNG cần phải thực hiện một số phép thuật, dưới dạng một sự kiện đặc biệt ít được biết đến của jQuery .
Với tính năng này, về cơ bản bạn có thể chạy một số mã thiết lập cho bất kỳ sự kiện nào, lần đầu tiên ai đó cố gắng sử dụng sự kiện này theo bất kỳ cách nào (chẳng hạn như ràng buộc với sự kiện).
Trong mã thiết lập này, bạn có thể kiểm tra hỗ trợ trình duyệt riêng và nếu trình duyệt không thực hiện điều này, bạn có thể thiết lập một bộ đếm thời gian để thăm dò các thay đổi và kích hoạt sự kiện jQuery.
Điều này hoàn toàn không ràng buộc mã của bạn cần phải hiểu vấn đề hỗ trợ này, việc triển khai một sự kiện đặc biệt thuộc loại này là không đáng kể (để có được một phiên bản hoạt động 98% đơn giản), nhưng tại sao lại làm như vậy khi đã có người khác .