浏览器中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 相关文章推荐
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
May 14 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
Mar 20 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
基于jquery实现复选框全选,反选,全不选等功能
Oct 16 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
利用vue.js插入dom节点的方法
Mar 15 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
JavaScript中CreateTextFile函数
Aug 30 Javascript
原生JavaScript实现购物车
Jan 10 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
详解Python中的文件操作
2016/08/28 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Python 使用type来定义类的实现
2019/11/19 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
python如何快速拼接字符串
2020/10/28 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
厨师长岗位职责
2014/03/02 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
功夫熊猫观后感
2015/06/10 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python