HTML5 でブラウザーの履歴を変更する機能が導入された今history.pushState
、Web サイトは URL のフラグメント識別子を変更する代わりに、これを Ajax と組み合わせて使用し始めています。
悲しいことに、これらの呼び出しは では検出できなくなりましたonhashchange
。
私の質問は:ウェブサイトがいつ使用するかを検出する信頼できる方法 (ハック? ;)) はありhistory.pushState
ますか? 仕様には、発生するイベントについては何も記載されていません (少なくとも、何も見つかりませんでした)。
ファサードを作成window.history
し、独自の JavaScript オブジェクトに置き換えようとしましたが、まったく効果がありませんでした。
詳細な説明:これらの変更を検出し、それに応じて動作する必要がある Firefox アドオンを開発しています。数日前に、いくつかのDOM イベント
をリッスンすることが効率的かどうかを尋ねる同様の質問があったことは知っていますが、これらのイベントはさまざまな理由で生成される可能性があるため、それに頼りたくはありません。
アップデート:
onpopstate
が呼び出されたときにトリガーされないことを示すjsfiddle (Firefox 4 または Chrome 8 を使用) を次に示しますpushState
(または、何か間違ったことをしていますか? 自由に改善してください!)。
更新 2:
別の(サイド)問題はwindow.location
、使用時に更新されないことですpushState
(ただし、これについてはすでにここで読んだと思います)。