浏览器中url存储的JavaScript实现


Posted in Javascript onJuly 07, 2015

现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不复杂,是可以实现的,我们来编写些代码。来看看它是如何工作的。

var stateObject = {};
var title = "Wow Title";
var newUrl = "/my/awesome/url";
history.pushState(stateObject,title,newUrl);

History 对象 pushState() 这个方法有3个参数,你可以从上面的例子看到。第一个参数,是一个Json对象 , 在你储存有关当前URl的任意历史信息.第二个参数,title 就相当于传递一个文档的标题 ,第三个参数是用来传递新的URL. 你将看到浏览器的地址栏发生变化而当前页面并没刷新。

让我们看一个例子,在这个例子中我们将在每个独立的URL中存储一些任意数据。

for(i=0;i<5;i++){
 var stateObject = {id: i};
 var title = "Wow Title "+i;
 var newUrl = "/my/awesome/url/"+i;
 history.pushState(stateObject,title,newUrl);
}

现在运行,点击浏览器的返回按钮,查看URL是怎么改变的。对于每次URL的改变,是因为它存储了历史状态“id”以及对应的值。但是我们怎么重新获得历史状态,并且在此基础上做些事情呢?我们需要对“popstate”添加事件监听器,这将会在每次历史对象的状态改变的时候触发。

for(i=0;i<5;i++){
 var stateObject = {id: i};
 var title = "Wow Title "+i;
 var newUrl = "/my/awesome/url/"+i;
 history.pushState(stateObject,title,newUrl);
 alert(i);
}
 
window.addEventListener('popstate', function(event) {
 readState(event.state);
});
 
function readState(data){
 alert(data.id);
}

现在你会看到无论什么时候你点击返回按钮,一个“popstate”事件就会被触发。我们的事件侦听器然后检索历史状态对象与之关联的URL,并提示“id”的值。

它是非常的简单和有趣,不是吗?

Javascript 相关文章推荐
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
JavaScript实现彩虹文字效果的方法
Apr 16 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
js实现密码强度检验
Jan 15 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
vue2中使用less简易教程
Mar 27 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
element-ui中Table表格省市区合并单元格的方法实现
Aug 07 Javascript
vue实现扫码功能
Jan 17 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
May 20 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 #Javascript
深入分析下javascript中的[]()+!
Jul 07 #Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 #Javascript
javascript动态添加删除tabs标签的方法
Jul 06 #Javascript
Jsonp post 跨域方案
Jul 06 #Javascript
javascript运动详解
Jul 06 #Javascript
浅谈jQuery中height与width
Jul 06 #Javascript
You might like
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python实现的矩阵类实例
2017/08/22 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
项目负责人任命书
2014/06/04 职场文书
质量提升方案
2014/06/16 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
2015年环保局工作总结
2015/05/22 职场文书
国庆阅兵观后感
2015/06/15 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python