onHistoryBackなどのフックを提供する方法はありますか?それはHistory.pushState()呼び出しの結果だ場合..任意のアイデアを私は現在JavaScriptの履歴バックフック
History.Adapter.bind (window, 'statechange', function() {});
でhistory.jsを使用しています。しかし、私は、ユーザーがhistory.backをpresed場合(尋ねるする方法がありません)、または?
onHistoryBackなどのフックを提供する方法はありますか?それはHistory.pushState()呼び出しの結果だ場合..任意のアイデアを私は現在JavaScriptの履歴バックフック
History.Adapter.bind (window, 'statechange', function() {});
でhistory.jsを使用しています。しかし、私は、ユーザーがhistory.backをpresed場合(尋ねるする方法がありません)、または?
私がこれをしたのは、実際のサイトをクリックするたびに変数をtrueに設定することでした。 statechangeイベントは、この変数をチェックします。それが本当であれば、彼らはサイト上のリンクを使用していた。偽であれば、ブラウザの戻るボタンをクリックしていました。例えば
:助け:)状態のすべてがHistory.savedStates
に格納されている
を
var clicked = false;
$(document).on('click','a',function(){
clicked = true;
// Do something
});
History.Adapter.bind (window, 'statechange', function() {
if(clicked){
// Normal link
}else{
// Back button
}
clicked = false;
});
希望。バックを押すたびに別の状態が追加されます。理論的にはをテストしてHistory.savedStates[History.savedStates.length - 2] == currentState
かどうかを調べることができます。これは、ユーザーがステップaからステップbに戻り、ステップaに戻ることを示します。しかし、ユーザーは戻るボタン以外の方法を利用することができます。そのため、これをユーザーイベントと組み合わせて使用する必要があります。
History.getStateByIndex
メソッドを使用して、保存された状態を返すこともできます。
ありがとう@私はあなたのようなアプローチを使って解決しましたが、 "statechange"フックが実行されないように "Clicked"変更間にHistory.pushState(...)呼び出しをラップしました。 –