使用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 相关文章推荐
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 Javascript
js特殊字符转义介绍
Nov 05 Javascript
js 获取input点选按钮的值的方法
Apr 14 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
Nov 23 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
jQuery弹出窗口打开链接的实现代码
Dec 24 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
Aug 14 Javascript
初学者AngularJS的环境搭建过程
Oct 27 Javascript
讲解vue-router之什么是编程式路由
May 28 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
Yii核心验证器api详解
2016/11/23 PHP
php取出数组单个值的方法
2018/03/12 PHP
JS 自动安装exe程序
2008/11/30 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
js的回调函数详解
2015/01/05 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
python Django连接MySQL数据库做增删改查
2013/11/07 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python中关于浮点数的冷知识
2019/09/22 Python
在django中自定义字段Field详解
2019/12/03 Python
python的列表List求均值和中位数实例
2020/03/03 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
幼儿园教师培训方案
2014/02/04 职场文书
实习生岗位职责
2014/04/12 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
任命书标准格式
2015/03/02 职场文书
工程主管竞聘书
2015/09/15 职场文书
财产分割协议书
2016/03/22 职场文书
导游词之西安骊山
2019/12/03 职场文书
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android