javascript - HTML5 History API 需要双击后退

标签 javascript ajax html html5-history

我正在使用 ajax 和 HTML5 历史记录 API 来实现分页。让我描述一下事件的顺序来解释我的问题。

我有以下 4 个分页页面。

1 - 2 - 3 - 4

这是发生的事情的顺序。

  • 打开页面
  • 点击“2”//一切顺利
  • 点击“3”//一切顺利
  • 点击“4”//一切顺利
  • 点击 Chrome 浏览器后退按钮//转到第 3 页,一切顺利 **- 单击 Chrome Browner 后退按钮//停留在第 3 页。
  • 快速双击后退按钮//转到第 2 页**

我不明白为什么双击后退可以得到所需的结果,但 1 次后退却不起作用。这是我的简化代码。

function fetch(val) {
  var page = val;

  // Ajax Request Code

  success: function (data) {
     // Some processing code
     window.history.pushState(page, '', '/mydata/page-num-' + page);

  },

  // Other Ajax Request Code

}

window.onpopstate = function(event) {
    fetch(parseInt(event.state))
};

传递给我的获取函数的值只是一个整数。任何帮助,将不胜感激。谢谢!

最佳答案

我解决了我的问题。

从 4 -> 3 发生的问题是,从“onpopstate”调用“fetch function”不应导致 PushState。双击起作用的原因是因为“onopopstate”在 PushState 有机会覆盖之前被执行了两次。

关于javascript - HTML5 History API 需要双击后退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33946476/

相关文章:

javascript - 用于验证字母和数字的正则表达式无法按预期工作

javascript - Jquery 事件 - 如何选择不包括某些内部区域的整个 DIV

php ajax数据库问题

php - PHP + MySQL +JavaScript 网络聊天

javascript - HTML/Javascript 页面转换

javascript - 在 javascript 中加载页面而不打开它

javascript - 如何让 JavaScript 文件在 Rails 5 应用程序上运行

javascript - 关于 Ajax 成功重新加载表

html - 背景图像在 IE 中不显示,但在其他浏览器中工作正常

html - 当<div>中有两个或多个类时,哪个类具有更高的优先级?