温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
知识 2023-08-28 36 次阅读

ajax不能后退的原因是什么

   

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

本文操作环境windows7系统、javascript1.8.5版、dell g3电脑。

ajax不能后退?解决ajax无法后退问题实例

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

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

解决方法

window.history实例

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

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

state:

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

replacestate:就是window.replacestate();

用法

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

改变后的浏览器地址

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

所以这里的解题思路

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

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

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

推荐学习《ajax视频教程》

的原因是什么