これを実際に行う唯一の方法(そして「reallysimplehistory」がこれを行う方法)は、現在のハッシュをチェックし続ける間隔を設定し、それを以前のものと比較することによって、これを行い、サブスクライバーに変更をサブスクライブさせることですハッシュが変更された場合に発生するイベント..完全ではありませんが、ブラウザは実際にはこのイベントをネイティブでサポートしていません。
この回答を最新の状態に保つために更新します。
jQueryを使用している場合(今日はほとんどの場合、ある程度基礎となるはずです)、jQueryが提供する抽象化を使用して、イベントシステムを使用してウィンドウオブジェクトのハッシュ変更イベントをリッスンすることをお勧めします。
$(window).on('hashchange', function() {
//.. work ..
});
ここでの良い点は、ハッシュ変更のサポートについても心配する必要のないコードを記述できることです。ただし、あまり知られていないjQuery機能jQueryの特別なイベントの形で魔法をかける必要があります。
この機能を使用すると、基本的に、誰かが何らかの方法(イベントへのバインドなど)でイベントを初めて使用しようとしたときに、任意のイベントに対してセットアップコードを実行できます。
このセットアップコードでは、ネイティブブラウザーのサポートを確認できます。ブラウザーがこれをネイティブに実装していない場合は、変更をポーリングしてjQueryイベントをトリガーする単一のタイマーをセットアップできます。
This completely unbinds your code from needing to understand this support problem, the implementation of a special event of this kind is trivial (to get a simple 98% working version), but why do that when somebody else has already.