2012-05-22 16 views
5

onHistoryBackなどのフックを提供する方法はありますか?それはHistory.pushState()呼び出しの結果だ場合..任意のアイデアを私は現在JavaScriptの履歴バックフック

History.Adapter.bind (window, 'statechange', function() {}); 

でhistory.jsを使用しています。しかし、私は、ユーザーがhistory.backをpresed場合(尋ねるする方法がありません)、または?

答えて

2

私がこれをしたのは、実際のサイトをクリックするたびに変数をtrueに設定することでした。 statechangeイベントは、この変数をチェックします。それが本当であれば、彼らはサイト上のリンクを使用していた。偽であれば、ブラウザの戻るボタンをクリックしていました。例えば

:助け:)状態のすべてがHistory.savedStatesに格納されている

+0

ありがとう@私はあなたのようなアプローチを使って解決しましたが、 "statechange"フックが実行されないように "Clicked"変更間にHistory.pushState(...)呼び出しをラップしました。 –

1

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メソッドを使用して、保存された状態を返すこともできます。