为了账号安全,请及时绑定邮箱和手机立即绑定

在我的AJAX应用程序中拦截对“后退”按钮的调用

在我的AJAX应用程序中拦截对“后退”按钮的调用

慕标琳琳 2019-09-21 15:35:03
我有一个AJAX应用。用户单击一个按钮,页面的显示就会改变。他们单击“后退”按钮,希望进入原始状态,但转到浏览器中的上一页。如何截取并重新分配后退按钮事件?我已经研究过RSH之类的库(我无法使用...),并且听说使用hash标签在某种程度上有所帮助,但我无法理解。
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

要对一个古老(但很受欢迎)的问题给出最新答案:


HTML5引入了history.pushState()和history.replaceState()方法,分别允许您添加和修改历史记录条目。这些方法与window.onpopstate事件结合使用。


使用history.pushState()更改XMLHttpRequest在状态更改后创建的对象的HTTP标头中使用的引荐来源网址。引荐来源网址是文档的URL,该文档的窗口this位于创建XMLHttpRequest对象时。



查看完整回答
反对 回复 2019-09-21
?
开满天机

TA贡献1786条经验 获得超12个赞

使用jQuery,我做了一个简单的解决方案:


$(window).on('hashchange', function() {

    top.location = '#main';

    // Eventually alert the user describing what happened

});

到目前为止,虽然仅在谷歌浏览器中进行了测试。


这解决了我的Web应用程序的问题,该应用程序也高度基于AJAX。


也许有点hack-ish,但我称其为优雅的hacking ;-)每当您尝试向后导航时,它都会在URI中弹出一个哈希部分,从技术上讲,它就是试图向后导航的内容。


它拦截了单击浏览器按钮和鼠标按钮的行为。而且您不能通过每秒单击几次来向后强行破解它,这是在基于setTimeout或setInterval的解决方案中会出现的问题。


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 396 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信