如何操纵浏览器历史记录并捕获浏览器后退/前进按钮?

时间:2015-02-06 18:49:39

标签: javascript jquery html google-chrome pushstate

我现在一直在寻找几个小时试图进行简单的浏览器历史操作。

我有几个菜单链接,我将点击处理程序绑定到它们。链接'href'只是哈希:href="#Home"href="#About"

我想在用户点击链接时显示子页面,而不会重新加载页面并更改浏览器网址。

我也尝试过使用pushState()的这个基本示例,但它不起作用: http://jsbin.com/wecubizovu/1/edit?html,js,console

http://jsbin.com/wecubizovu

当我在Chrome中运行此功能时,我希望,如果用户点击该链接,他会在网址上添加#asd, popstate不会更改。为什么popstate会被触发?我怎样才能做到这一点,当用户点击链接时,我将哈希附加到浏览器网址,当用户点击浏览器后退按钮时,我会抓住该事件并显示我想要的页面?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的a元素有href '',如果您不阻止默认操作,它仍会被执行,这会以某种方式弄乱您想要做的事情。 将您的功能更改为

$("#asd").click(function(e) {
  e.preventDefault();
  alert("jo");
  window.history.pushState("", document.title, "#asd");
});

实现您的目标。

编辑:链接:http://jsbin.com/sosozeteti

http://jsbin.com/sosozeteti/1/edit?html,js