HTML5履歴管理を使用して、AJAXがロードされたサブコンテンツを含むウェブサイト内を前後にナビゲートする機能を追加しています。HTML5履歴状態内に関数を保存する方法
これで、状態オブジェクト内にjavascript関数を格納し、状態がポップアップしてコールバックするようにしたいと考えています。多かれ少なかれ次のコードのようになります:
$(window).bind("popstate", function(event) {
var state = event.originalEvent.state;
if (!state) {
return;
}
state.callback(state.argument);
}
function beforeLoad() {
var resourceId = "xyz";
var func;
if (case1) {
func = switchPageToMode1;
} else { // case 2
func = swithPageToMode2;
}
func(resourceId); // run the function
window.history.pushState({ callback: func, resourceId: resourceId }, "newTitle", "newURL"); // and push it to history
}
function switchPageToMode1(resourceId) {
alterPageLayoutSomeWay();
loadResource(resourceId);
}
function swithPageToMode2(resourceId) {
alterPageLayoutSomeOtherWay();
loadResource(resourceId);
}
function loadResource(resourceId) {
...
}
すべてです。だから私がしようとしているのは、javascript関数への参照を格納することです。状態(実際window.history.pushStateコール)を押すとブラウザが申し立てをしかし、すなわちエラー:「DATA_CLONE_ERR:DOM例外25」
誰も私が間違ってやっている知っていますか?状態内に関数呼び出しを格納することは可能ですか?
ありがとう!それはそれをすべて説明します。シリアライゼーション部分を見逃してしまった。 – stafffan
@Jordan私は '{html:$( '#main')。html()}'のように見えるオブジェクトを保存していますが、IE 11で 'Data Clone Error' /またはhttps://github.com/devote/HTML5-History-API/blob/master/history.jsのような追加の履歴APIを追加する。私はまだ何が間違っていますか? –