浏览器中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+ajax请求data显示在GridView上(asp.net)
Aug 27 Javascript
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
深入分析javascript中的错误处理机制
Jul 17 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
Nov 02 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 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
把PHP安装为Apache DSO
2006/10/09 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
中科软测试工程师面试题
2012/06/16 面试题
企业军训感想
2014/02/07 职场文书
财务科科长岗位职责
2014/03/10 职场文书
《老山界》教学反思
2014/04/08 职场文书
如何在C++中调用Python
2021/05/21 Python
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫