使用AJAX / jQuery加载页面和history.pushState()方法保留浏览器“后退”按钮function
我想通过AJAX(jQuery load
方法)加载页面并通过history.pushState
方法将URL推送到浏览器栏时保留后退按钮function。 单击浏览器后退按钮时出现问题,第一次单击仅恢复以前的URL但不加载上一页。
到目前为止,这是我的代码:
$(function(){ var profile_url= "/profile"; $('#click_button').click(function(){ $('#main_content').load(profile_url); history.pushState({profile:profile_info}, "profile", profile_url); }); });
我的问题是,有没有办法在第一次单击后退按钮时将上一页的AJAX加载到#main_content
div中?
任何帮助/建议将不胜感激。
我想引导大家到一个名为PJAX的jQuery插件,它完成了我最终有兴趣提出这个问题。 Pjax()结合了jQuery AJAX和pushState来加载页面并保留浏览器历史记录。
这是代码 ,这是一个很好的pjax()
演示 。
它非常好用且易于使用,在演示中,只需记住单击复选框即可帮助演示pjax()
的function。
为此,您需要订阅’popstate’事件。
在导航到会话历史记录条目时,在某些情况下会触发popstate事件。 HTML5规范
你可以这样做:
window.onpopstate = function() { $('#main_content').load(location.href) };
您可以使用popstate
事件来实现此目的。 有关详细信息,请参阅https://developer.mozilla.org/en/DOM/window.onpopstate 。
另请查看History.js ,它提供了一个包装器,如果浏览器不支持历史记录API,则可以回退到url hashtags。