使用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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
jqgrid 简单学习笔记
May 03 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
js实现格式化金额,字符,时间的方法
Feb 26 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 Javascript
Angular实现form自动布局
Jan 28 Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
你准备好迎接vue3.0了吗
Apr 28 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 Javascript
js获取图片的base64编码并压缩
Dec 05 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
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
学习jquery之一
2007/04/27 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
小程序实现多列选择器
2019/02/15 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python读写配置文件的方法
2015/06/03 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
python 二维数组90度旋转的方法
2019/01/28 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
竞职演讲稿范文
2014/01/11 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
考察邀请函范文
2015/01/31 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书