因此,我使用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,我仍然在IE中收到'Data Clone Error' /或添加一些額外的歷史API,如https://github.com/devote/HTML5-History-API/blob/master/history.js。我還能做什麼錯? –