pushState()、popstate事件配合ajax实现浏览器前进后退页面局部刷新
来源:互联网 发布:linux 查看登陆的用户 编辑:程序博客网 时间:2024/06/05 16:59
最近研究pushState,看了网上的文章还是不怎么会用,于是自己摸索着理解使用,终于实现局部刷新同时前进后退。
首先说说pushState(),这个函数将当前的url等信息加入history堆栈中;
当点击浏览器的前进后退按钮时,会触发popstate事件,所以可以在onpopstate的时候使用ajax实现局部刷新前进后退。
我的方法(用jQuery):
1、定义两个函数
function ajaxLoad(){//里面加载ajax};function setState(){var stateobj = ({//里面存放url等信息,stateobj将作为pushState()的第一个参数url:url,title:title});window.history.pushState(stateobj,null,url);//将当前url加入堆栈中};
$('a').on('click',function(event){//假设点击a标签加载ajaxevent.preventDefault();//防止跳转ajaxLoad();setState();});
window.addEventListener('popstate', function(event) {var state = event.state;//取得目标url的state,这样就可以通过state.url等方式访问之前stateobj中的内容ajaxLoad();//注意:此处不要调用setState();了,因为在历史记录堆栈中跳转时不需要往堆栈中写入数据});
注意:
setState()的作用是往历史记录堆栈中添加一条记录;ajax载入进来的元素(如a、button标签等)如有事件要在载入后重新绑定事件;
前端小白学习时所得,如有更好的方法欢迎讨论,代码写得菜求轻喷~
0 0
- pushState()、popstate事件配合ajax实现浏览器前进后退页面局部刷新
- 使用history.pushState()和popstate事件实现AJAX的前进、后退功能
- history pushState 实现浏览器前进与后退
- 使用ajax和history.pushState无刷新改变页面URL(ajax中前进后退)
- 实现页面的后退、刷新、前进
- Flex中捕获浏览器的前进、后退、刷新、关闭事件
- 仿浏览器 前进 后退 刷新
- AJAX 前进后退刷新问题
- 处理Flex页面的后退、前进、刷新、关闭事件
- 处理Flex 页面的后退前进刷新关闭事件
- 【JS】:JS实现页面的刷新,后退和前进
- 实现不刷新整个页面进行前进后退
- html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题
- Codeigniter整合PJAX(pushstate+ajax)实现无刷新页面
- 浏览器前进、后退键时刷新页面而不读取缓存,重新刷新页面
- Ajax 实现页面局部刷新
- Ajax实现页面局部刷新
- JavaScript实现页面前进后退
- Zend Studio For Eclipse 6.1.2 汉化 注册 英文版转化为中文版
- mysql 一张表update另一张表
- [CF 329E]Evil题解翻译
- layoutinflater详解
- android中Activity的生命周期各回调函数的调用顺序学习心得
- pushState()、popstate事件配合ajax实现浏览器前进后退页面局部刷新
- DaVinci 开发文档博客记录
- tomcat配置
- C++的字符串分割函数
- 1连接数据库
- Android 对话框弹出位置和透明度的设置
- 第二届SDN大赛--必答题1
- mysql修改密码
- fedora linux 非正常关机 导致不能直接启动桌面问题