onHistoryBack などのフックを提供する方法はありますか? 私は現在 history.js を使用しています
History.Adapter.bind (window, 'statechange', function () {});
しかし、ユーザーが history.back() を押したのか、それとも History.pushState() 呼び出しの結果なのかを尋ねる方法はありません..何か考えはありますか?
onHistoryBack などのフックを提供する方法はありますか? 私は現在 history.js を使用しています
History.Adapter.bind (window, 'statechange', function () {});
しかし、ユーザーが history.back() を押したのか、それとも History.pushState() 呼び出しの結果なのかを尋ねる方法はありません..何か考えはありますか?
私がこれを行った方法は、実際のサイトをクリックするたびに変数をtrueに設定することでした。次に、statechangeイベントはこの変数をチェックします。それが本当なら、彼らはサイト上のリンクを使用していました。それが誤りだった場合、彼らはブラウザの戻るボタンをクリックしていました。
例えば:
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
したがって、理論的には、テストして確認することができますHistory.savedStates[History.savedStates.length - 2] == currentState
。これは、ユーザーがステップaからステップbに進み、ステップaに戻ったことを示します。ただし、ユーザーは戻るボタン以外の方法でアクセスできる可能性があるため、これをユーザーイベントと組み合わせて使用する必要がある場合があります。
このメソッドを使用してHistory.getStateByIndex
、保存された状態を返すこともできます。