Javascript html5历史导航:除非在页面加载时,否则不会触发popstate
给定一个带有ajax导航的webapp,您打算使用html5的历史导航 但是:绑定到popstate事件时,它不会被触发。页面加载时的例外情况,如果是: 如果HTML5可用(检测正确,演示在Chrome和FF中同样有效): 什么不起作用:Javascript html5历史导航:除非在页面加载时,否则不会触发popstate,javascript,jquery,ajax,html,html5-history,Javascript,Jquery,Ajax,Html,Html5 History,给定一个带有ajax导航的webapp,您打算使用html5的历史导航 但是:绑定到popstate事件时,它不会被触发。页面加载时的例外情况,如果是: 如果HTML5可用(检测正确,演示在Chrome和FF中同样有效): 什么不起作用: 单击链接时不会调用popstate回调historyChangeHandler()。也就是说,将打印clicked,但不会打印事件 我尝试的是: 使用setTimeout延迟pushState调用 e、 预防默认值();并返回true而不是false 同
- 单击链接时不会调用popstate回调historyChangeHandler()。也就是说,将打印clicked,但不会打印事件
- 使用setTimeout延迟pushState调用
- e、 预防默认值();并返回true而不是false
- 同时附加到div-s并返回true
- 在页面加载时调用historyChangeHandler()
- 按下后退按钮时调用historyChangeHandler()
- 按下前进按钮时调用historyChangeHandler()
- 如果从控制台调用history.pushState({url:“/test”},”,“/test”),则为historyChangeHandler()李>
我错过了什么线索吗?为什么需要触发popstate事件?为什么不直接调用你的函数呢
$("a").click(function(e) {
var url = "/";
// ...
console.log("clicked");
history.pushState({url: url}, "", url);
historyChangeHandler({url: url});
return false;
});
为什么需要触发popstate事件?为什么不直接调用你的函数呢
$("a").click(function(e) {
var url = "/";
// ...
console.log("clicked");
history.pushState({url: url}, "", url);
historyChangeHandler({url: url});
return false;
});
单击链接时不应调用
popstate
。当用户使用“后退/前进”按钮导航时,将调用它
一切都按预期的方式运行。
popstate
不应在单击链接时调用。当用户使用“后退/前进”按钮导航时,将调用它
一切都按预期的方式运行。请参阅代码,单击链接时会调用pushState,这就是我期待它的原因。您调用pushState,并希望它立即触发popState?这毫无意义。不管你期望什么,也不管你是否喜欢答案,它仍然按照预期的方式工作。请看代码,单击链接时会调用pushState,这就是我期望它的原因。你调用pushState,你希望它立即触发popState?这毫无意义。不管你期望什么,不管你是否喜欢这个答案,它仍然按照它应该的方式工作。