我现在一直在寻找几个小时试图进行简单的浏览器历史操作。
我有几个菜单链接,我将点击处理程序绑定到它们。链接'href'只是哈希:href="#Home"
或href="#About"
。
我想在用户点击链接时显示子页面,而不会重新加载页面并更改浏览器网址。
我也尝试过使用pushState()的这个基本示例,但它不起作用: http://jsbin.com/wecubizovu/1/edit?html,js,console
当我在Chrome中运行此功能时,我希望,如果用户点击该链接,他会在网址上添加#asd, popstate不会更改。为什么popstate会被触发?我怎样才能做到这一点,当用户点击链接时,我将哈希附加到浏览器网址,当用户点击浏览器后退按钮时,我会抓住该事件并显示我想要的页面?
谢谢!
答案 0 :(得分:1)
您的a
元素有href
''
,如果您不阻止默认操作,它仍会被执行,这会以某种方式弄乱您想要做的事情。
将您的功能更改为
$("#asd").click(function(e) {
e.preventDefault();
alert("jo");
window.history.pushState("", document.title, "#asd");
});
实现您的目标。