【发布时间】:2012-01-20 06:28:40
【问题描述】:
因此,我使用 HTML5 历史管理来添加在带有 AJAX 加载的子内容的网站内来回导航的功能。
现在我想在状态对象中存储 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 调用)时,浏览器会提出投诉,即 Error: "DATA_CLONE_ERR: DOM Exception 25"
有人知道我做错了什么吗?是否可以在状态中存储函数调用?
【问题讨论】:
标签: javascript html browser-history