gpt4 book ai didi

javascript - html5历史导航: popstate not triggered except on page load

转载 作者:行者123 更新时间:2023-11-28 21:06:55 25 4
gpt4 key购买 nike

给定一个带有 ajax 导航的 Web 应用程序,您打算使用 html5 的历史导航。

但是:绑定(bind)到 popstate 事件时它不会被触发。页面加载时除外,当它是:

如果 HTML5 可用(正确检测到,演示在 Chrome 中的效果与 FF 一样好):

// Callback
function historyChangeHandler(data) {
console.log(data);
}

// Bind
$(window).bind('popstate', historyChangeHandler);


// Trigger
$("a").click(function(e) {
var url = "/";
// ...
console.log("clicked");
history.pushState({url: url}, "", url);
return false;
});

什么不起作用:

  • 单击链接时不会调用 popstate 回调historyChangeHandler()。也就是说,打印了 clicked,但不打印事件。

我尝试过的:

  • 使用 setTimeout 推迟 PushState 调用。
  • e.preventDefault();并返回 true 而不是 false
  • 同时附加到 div-s 并返回 true

什么有效:

  • historyChangeHandler() 在页面加载时调用。
  • historyChangeHandler() 在按下后退按钮时调用。
  • historyChangeHandler() 在按下前进按钮时调用。
  • historyChangeHandler() 如果从控制台调用history.pushState({url: "/test"}, "", "/test")!

我错过了什么线索吗?

最佳答案

单击链接时不应调用

popstate。当用户使用后退/前进按钮导航时会调用它。

一切都按预期进行。

关于javascript - html5历史导航: popstate not triggered except on page load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com