Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5历史导航:除非在页面加载时,否则不会触发popstate_Javascript_Jquery_Ajax_Html_Html5 History - Fatal编程技术网

Javascript html5历史导航:除非在页面加载时,否则不会触发popstate

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 同

给定一个带有ajax导航的webapp,您打算使用html5的历史导航

但是:绑定到popstate事件时,它不会被触发。页面加载时的例外情况,如果是:

如果HTML5可用(检测正确,演示在Chrome和FF中同样有效):

什么不起作用:

  • 单击链接时不会调用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?这毫无意义。不管你期望什么,不管你是否喜欢这个答案,它仍然按照它应该的方式工作。