使用JavaScript修改浏览器URL地址栏的实现代码


Posted in Javascript onOctober 21, 2013

现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器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”的值。
它是非常的简单和有趣,不是吗?

英语原文: http://hasin.me/2013/10/16/manipulating-url-using-javascript-without-freshing-the-page/

Javascript 相关文章推荐
javascript下对于事件、事件流、事件触发的顺序随便说说
Jul 17 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
深入理解JavaScript的React框架的原理
Jul 02 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
Jun 08 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
ionic2打包android时gradle无法下载的解决方法
Apr 05 Javascript
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 Javascript
vue v-on:click传递动态参数的步骤
Sep 11 Javascript
JavaScript实现网页计算器功能
Oct 29 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 #Javascript
在javaScript中关于submit和button的区别介绍
Oct 20 #Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 #Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
Oct 20 #Javascript
jQuery 属性选择器element[herf*='value']使用示例
Oct 20 #Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 #Javascript
浏览器的JavaScript引擎的识别方法
Oct 20 #Javascript
You might like
php自动适应范围的分页代码
2008/08/05 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
对python中return与yield的区别详解
2020/03/12 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
HTTP状态码详解
2021/03/18 杂记
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
升职自荐书范文
2013/11/28 职场文书
优秀员工年终发言演讲稿
2014/01/01 职场文书
初中政治教学反思
2014/01/17 职场文书
社区中秋节活动方案
2014/01/29 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
应届生求职信
2014/05/31 职场文书
消防安全宣传标语
2014/06/07 职场文书
业务员岗位职责范本
2015/04/03 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技