浏览器中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 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
javascript获取ckeditor编辑器的值(实现代码)
Nov 18 Javascript
javascript数组操作总结和属性、方法介绍
Apr 05 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
Feb 02 Javascript
javascript replace()第二个参数为函数时的参数用法
Dec 26 Javascript
原生js实现弹出层效果
Jan 20 Javascript
jQuery倒计时代码(超简单)
Feb 27 Javascript
JS实现评价的星星功能
Aug 20 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
如何使JavaScript休眠或等待
Apr 27 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访问带有密码的Redis方法示例
2017/02/09 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
从零学Python之入门(四)运算
2014/05/27 Python
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python字符串处理函数简明总结
2015/04/13 Python
Python 判断奇数偶数的方法
2018/12/20 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
存储过程的优点有哪些
2012/09/27 面试题
Linux的文件类型
2012/03/07 面试题
请介绍一下WSDL的文档结构
2013/03/17 面试题
小学生评语大全
2014/04/18 职场文书
实习报告评语
2014/04/26 职场文书
中学生演讲稿
2014/04/26 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
python元组打包和解包过程详解
2021/08/02 Python
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python