ajax不能后退的原因有哪些

发布时间:2021-12-17 15:34:55 作者:小新
来源:亿速云 阅读:147

这篇文章将为大家详细讲解有关ajax不能后退的原因有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

因为ajax与浏览器的history.back()与forward()不友好,不能前进与后退,其解决办法就是根据当前URL地址中的查询内容让对应的菜单执行Ajax载入即可。

本文操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

解决ajax无法后退问题实例

都知道ajax有一个明显的缺点就是与浏览器的history.back()与forward()不友好,不能前进与后退。

实例地址:解决ajax无法后退问题实例

解决方法:

ajax不能后退的原因有哪些ajax不能后退的原因有哪些

window.history实例

在console里面打印出window.history的实例,可以查看相关对象的原型。

length:length为浏览记录队列长度,由于这个页面是新打开的,队列中只有当前页面链接相关信息,其值为1

state:

pushState:就是window.history.pushState();

replaceState:就是window.replaceState();

用法:

window.history.pushState({status: 0} ,'' ,'?data=1');

ajax不能后退的原因有哪些ajax不能后退的原因有哪些

改变后的浏览器地址

这里需要注意的是,如果实在本地运行的话,在ie和火狐上都是可以完美运行的,但是现在新版的谷歌会报错,这是因为谷歌的安全机制问题。如果代码放在服务器上的话应该是没有这个错误的。

ajax不能后退的原因有哪些ajax不能后退的原因有哪些

所以这里的解题思路:

1.每次手动点击左侧的菜单,我将Ajax地址的查询内容(?后面的)附在demo HTML页面地址后面,使用history.pushState塞到浏览器历史中。

2.浏览器的前进与后退,会触发window.onpopstate事件,通过绑定popstate事件,就可以根据当前URL地址中的查询内容让对应的菜单执行Ajax载入,实现Ajax的前进与后退效果。

3.页面首次载入的时候,如果没有查询地址、或查询地址不匹配,则使用第一个菜单的Ajax地址的查询内容,并使用history.replaceState更改当前的浏览器历史,然后触发Ajax操作。

关于“ajax不能后退的原因有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. vue使用axios而不使用的ajax的原因
  2. 如何通过history解决ajax不支持前进/后退/刷新的问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ajax

上一篇:html5标记播放音乐的方法是什么

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》