使用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 相关文章推荐
jQuery动态设置form表单的enctype值(实现代码)
Jul 04 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 Javascript
js控制多图左右滚动切换效果代码分享
Aug 26 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
Sep 17 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
打造自己的jQuery插件入门教程
Sep 23 Javascript
基于jQuery实现一个marquee无缝滚动的插件
Mar 09 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
web页面和微信小程序页面实现瀑布流效果
Sep 26 Javascript
微信小程序实现保存图片到相册功能
Nov 30 Javascript
element多个表单校验的实现
May 27 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
drupal 代码实现URL重写
2011/05/04 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
运行Python编写的程序方法实例
2020/10/21 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
运动会800米加油稿
2014/02/22 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
2015年安全生产责任书
2015/01/30 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL