因此,我使用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) {
...
}
Run Code Online (Sandbox Code Playgroud)
行.所以我要做的是存储对javascript函数的引用.但是当推送状态(实际的window.history.pushState调用)时,浏览器会提出投诉,即错误:"DATA_CLONE_ERR:DOM …
我正在试图理解这个非常简化的if语句.在搜索答案时,我发现的是与三元运算符相关的答案.
无论如何.为什么下面的第一个案例起作用,而后者抛出一个ReferenceError?只是想了解事情是如何运作的.
true && alert("test")Run Code Online (Sandbox Code Playgroud)
var x;
true && x = 10;Run Code Online (Sandbox Code Playgroud)