使用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中null与undefined分析
Jul 25 Javascript
Javascript Cookie读写删除操作的函数
Mar 02 Javascript
jQuery实现 注册时选择阅读条款 左右移动
Apr 11 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
Feb 23 Javascript
简介JavaScript中search()方法的使用
Jun 06 Javascript
JavaScript利用HTML DOM进行文档操作的方法
Mar 28 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
vue-router的hooks用法详解
Jun 08 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
PHP脚本的10个技巧(7)
2006/10/09 PHP
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
javascript制作2048游戏
2015/03/30 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
如何利用python发送邮件
2020/09/26 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
大学生创业策划书
2014/02/02 职场文书
人事经理岗位职责
2014/04/28 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
工伤事故证明
2014/10/20 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
旅行社计调工作总结
2015/08/12 职场文书
PHP新手指南
2021/04/01 PHP
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
pytorch Dropout过拟合的操作
2021/05/27 Python
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python