我遇到以下情况的问题.
>用户访问网站
>用户点击链接,使用history.pushState来更新网址
>通过ajax加载的部分页面内容(使用jQuery)
>用户点击常规链接加载新页面
>用户点击返回以返回到pushState条目
>该页面现在只显示通过ajax检索的页面partial
我使用pushState为各种各样的东西做了一个网站,结果是一个令人震惊的响应网络应用程序,但这个问题阻止我使用这个.
以下是代码示例:
$('a').live('click',function(){ history.pushState({},'',this.href); popstate(this.href); return false; }); popstate = function(url){ $('#content').load(url); } window.onpopstate = function(event){ popstate(window.location.href); event.preventDefault(); }
笔记:
>当在window.onpopstate函数中放置警报时,似乎在步骤5中没有触发该事件.这是一个错误?
>问题只发生在使用ajax时.
>我不得不分开popstate函数,所以我可以在pushState后调用它.有没有办法手动触发window.onpopstate事件?
解决方法
似乎有些浏览器经常混淆部分加载通过ajax和整个页面,装饰与它的布局.这是因为它们都具有相同的URL.
所以当用户点击后退按钮时,浏览器将不会加载该URL,并且只显示先前通过ajax下载的部分.
所以当用户点击后退按钮时,浏览器将不会加载该URL,并且只显示先前通过ajax下载的部分.
为了避免这种情况并维护两个单独的内部缓存(一个用于部分页面,另一个用于整个页面),您应该通过ajax调用时在URL中添加一个GET参数.像你的代码一样:
popstate = function(url){ $('#content').load(url+'?_ajax=1'); }
希望这可以帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。