3 回答

TA贡献1836条经验 获得超5个赞
要对一个古老(但很受欢迎)的问题给出最新答案:
HTML5引入了history.pushState()和history.replaceState()方法,分别允许您添加和修改历史记录条目。这些方法与window.onpopstate事件结合使用。
使用history.pushState()更改XMLHttpRequest在状态更改后创建的对象的HTTP标头中使用的引荐来源网址。引荐来源网址是文档的URL,该文档的窗口this位于创建XMLHttpRequest对象时。

TA贡献1786条经验 获得超13个赞
使用jQuery,我做了一个简单的解决方案:
$(window).on('hashchange', function() {
top.location = '#main';
// Eventually alert the user describing what happened
});
到目前为止,虽然仅在谷歌浏览器中进行了测试。
这解决了我的Web应用程序的问题,该应用程序也高度基于AJAX。
也许有点hack-ish,但我称其为优雅的hacking ;-)每当您尝试向后导航时,它都会在URI中弹出一个哈希部分,从技术上讲,它就是试图向后导航的内容。
它拦截了单击浏览器按钮和鼠标按钮的行为。而且您不能通过每秒单击几次来向后强行破解它,这是在基于setTimeout或setInterval的解决方案中会出现的问题。
添加回答
举报