20

AJAXでいくつかのページを更新しているので、次のコードで履歴を更新しています-

/** Update the page history */
var pushState_object = {
    ajax_string: ajax_string,
    security: security,
};
window.history.pushState(pushState_object, title, permalink);

次に、ページの読み込み時にこの onPopState 関数を呼び出しています -

window.onpopstate = function(e){
    if(window.history.state !== null){
        initiate_load_updated_page(window.history.state.ajax_string, window.history.state.security, 0)
    }
}

コンテンツが AJAX を介して生成されたページから通常の方法で読み込まれたページに移動するときに戻るボタンを使用しても、少し問題があります。URL は変更されますが、ページはリロードされません。もう一度戻るをクリックすると、予想どおり前のページに移動し、次に進むことは正常に機能します。戻るボタンが機能しないのは、その 1 つの状況だけです。

ここでの提案は大歓迎です。

4

1 に答える 1

19

.stateそのようなデータを追加するために使用しなかったため、初期状態には使用可能なプロパティがありません.pushState(説明したように通常の方法でロードされました)。

ただし、 が存在.stateしない場合は元の状態でなければならないため、http://jsfiddle.net/pimvdb/CCgDn/1/elseのようなブロックを使用できます。

最後に、使用できますe.state

window.onpopstate = function(e){
    if(e.state !== null) { // state data available
        // load the page using state data
        initiate_load_updated_page(e.state.ajax_string, window.history.state.security, 0);

    } else { // no state data available
        // load initial page which was there at first page load
    }
}
于 2011-10-25T12:03:25.677 に答える