web-dev-qa-db-ja.com

History.jsを使用しているときに、クリックされている戻る/進むボタンを検出するにはどうすればよいですか?

コード内のjQueryでHistory.js( クリック )を使用しています。

Ajaxを介して新しいコンテンツをロードする場合、次を使用します。

History.pushState({my:stateobject},"newtitle","supernewurl");

ブラウザでURLが更新されるため、これは機能しているようです。

ただし、戻るボタンまたは進むボタンが押されるたびにコードをフックできる場所がわかりません。これにはどのメソッド/イベントが使用されますか?

8
Joey

次のように、イベントハンドラーをstatechangeイベントにバインドする必要があります。

$(window).bind('statechange',function(){
// Do something, inspect History.getState() to decide what
})

History.jsに付属する完全なjavascriptスニペットがあり、サイトを完全に「ajaxify」するために使用できます。 https://github.com/browserstate/ajaxify

より多くのインスピレーションを得るためにそこを見てください。

9
jgivoni

バッククリックイベントがないため、キャプチャしません。

window.history.pushStatewindow.history.popStatewindow.history.replaceStateメソッドを使用して、historyオブジェクトが正しい状態にあることを確認します。

https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

4
xandercoded

「onPopState」イベントを使用して、カスタムAJAXコードをトリガーすることができました。

window.onpopstate = function(event) {
  $(fellowModal).foundation('reveal', 'close');
};

私は他のいくつかのことを試みました、そしてそれは私のために働いたものです。

2
Chris Roane