ajax为什么不能后退
因为ajax与浏览器的history.back()与forward()不友好,不能前进与后退,其解决办法就是根据当前URL地址中的查询内容让对应的菜单执行Ajax载入即可。
本文操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
ajax为什么不能后退?解决ajax无法后退问题实例
都知道ajax有一个明显的缺点就是与浏览器的history.back()与forward()不友好,不能前进与后退。
实例地址:解决ajax无法后退问题实例
解决方法:
在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视频教程》
以上就是ajax为什么不能后退的详细内容,更多请关注其它相关文章!
下一篇: javascript是解释型还是编译型
推荐阅读
-
这个php正则为什么不能工作呢?在线等~
-
请大家帮我看一下我这段代码中的ul和a为什么不能显示在同一行中。_html/css_WEB-ITnose
-
mysql为什么不能添加两个外键
-
为什么用ajax提交就会出现这种情况呢?
-
为什么很多seoer始终不能在seo优化领域有所突破
-
Access入门教程13.9为什么不能建立页
-
tp3.2.3 table方法为什么可以select不能save操作?
-
为什么在html设置了禁用浏览器缓存,但点前进后退时页面还是 返回 From cache_html/css_WEB-ITnose
-
Lumia930/1520为什么不能升级Win10 Mobile创意者更新
-
店长啊,为什么我不能退出当前队伍?双十一合伙人答题赢喵币11月7日答案