用jquery的load方法通过ajax加载的页面,如何实现前进和后退?浏览器前进和后退功能失效了

如题所述

这个默认是不可能实现的。
因为jquery的load方法也是通过ajax进行加载的。
页面并没有进行跳转。浏览器上的url地址也没发生变化。
前进后退是起不到你想要的作用的。

对于这种纯粹ajax开发的web应用。
要实现这种效果,只能使用hash
hash指的就行url地址后面的#号以及后面的部分
利用onhashchange事件,检测到hash变化后。然后你再用js触发相应的变化。
从而实现页面间的路由。
但是onhashchange并不被所有浏览器支持,因此你需要针对不支持onhashchange事件的浏览器
自行实现。
具体内容,网上教程很多。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-20
ajax是局部刷新,不刷新整个页面的, 所以前进,后退,还有刷新几个按钮都会异常,
我以前是用插件解决的,你可以搜索下 jquery.history.js插件追问

我知道是用这个插件,但jquery.history.js插件具体怎么使用呢?,我是将内容通过jquery的load方法加载的

追答

真心没找到以前的代码,真不好意思。
不过这个插件不是对所有浏览器都适用的,ie6,ie7和ie8的兼容模式下就会有问题。
原理是利用形如 main#page 的 url #page 被浏览器认为是锚点 。
因此,当我们点击一个链接,这个链接改变页面的锚点部分,但是实际上当锚点变化时,页面不刷新,但却可以产生前进/后退的记录。

http://www.dotblogs.com.tw/grence/archive/2011/01/05/20594.aspx 这理由个实现的代码

不知道能不能对你有帮助。

第2个回答  推荐于2016-04-30
我可应很负责任的告诉你:ajax加载页面是无法实现浏览器前进和后退功能的,

因为你是直接通过jq 将当前页面的内容全给替换掉了,而页面并没有跳转。

不过不是所有事都是绝对的。告诉你一个比较笨但是有比较实用的方法。

就是通过iframe轻松解决问题。

首先,你的页面需要一个隐藏的iframe,且iframe的src对应的是一个任意的html,jsp都行。

当你ajax加载页面之前,用jq将当前的页面内容给加载到iframe中去,这个时候,你的iframe中的html元素,就是你当前页面的html元素没错把?这时候再加载你需要ajax加载的页面。注意,加载页面的时候千万不要把这个iframe给覆盖掉了。。。

再写一个键盘后退按键的js监控方法,当按下backspace的时候,将iframe的页面元素加载出来覆盖当前页面,在覆盖之前记得要把现在的页面元素覆盖到iframe中,因为你还有一个前进的操作

前进的操作也是大同小异,说白了就是父页面元素与iframe中的页面元素进行对换的操作

抱歉,语言组织能力有限,希望对你有所帮助,或者有所启发~!本回答被提问者采纳
相似回答