5

onHistoryBack などのフックを提供する方法はありますか? 私は現在 history.js を使用しています

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

しかし、ユーザーが history.back() を押したのか、それとも History.pushState() 呼び出しの結果なのかを尋ねる方法はありません..何か考えはありますか?

4

2 に答える 2

2

私がこれを行った方法は、実際のサイトをクリックするたびに変数を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;

});

お役に立てば幸いです:)

于 2012-05-22T14:20:36.413 に答える
1

すべての状態はに保存されHistory.savedStatesます。バックがプッシュされるたびに、別の状態が追加されます。History.savedStatesしたがって、理論的には、テストして確認することができますHistory.savedStates[History.savedStates.length - 2] == currentState。これは、ユーザーがステップaからステップbに進み、ステップaに戻ったことを示します。ただし、ユーザーは戻るボタン以外の方法でアクセスできる可能性があるため、これをユーザーイベントと組み合わせて使用​​する必要がある場合があります。

このメソッドを使用してHistory.getStateByIndex、保存された状態を返すこともできます。

于 2012-05-22T14:31:59.143 に答える