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