2

AJAX 経由でページを読み込んでいますが、最近 と について読みましhistory.pushStateonpopstate

の状態オブジェクト パラメータがどのようなものなのか、実際にはわかりませんでしpushStateた。MDN のページでは、例として単純なオブジェクトしか示されていませんでした。しかし、このオブジェクトを使用して AJAX 応答 HTML を保存し、起動時にそれをロードしないのはなぜonpopstateでしょうか? だから私はこのようなことをしています:

XHR ステータス 200/304 (AJAX 成功) :

if (history.pushState) {
    var state = {
        html: xhr.responseText
    };
    history.pushState(state, null, url);
}

onpopstate :

window.onpopstate = function(event) { 
    if(event && event.state) {
        someDivInTheDoc.innerHTML = event.state.html;
    } else {
        location.reload();
    }
};

もちろん、これは更新された可能性のある (古い) コンテンツをロードするため、戻ってブラウザーのキャッシュを取得する場合と似たようなものになると思います。

MDN では、オブジェクトは JSON 表現で最大 640k 文字を保持できると述べています。

では、状態オブジェクトはこのようなものを意図していたのでしょうか? または、履歴が位置を移動したときに、強制的にリロード/AJAXリクエストを再度実行する必要がありますか?

ありがとう。

4

0 に答える 0