AJAX 経由でページを読み込んでいますが、最近 と について読みましhistory.pushState
たonpopstate
。
の状態オブジェクト パラメータがどのようなものなのか、実際にはわかりませんでし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リクエストを再度実行する必要がありますか?
ありがとう。