博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 JavaScript 修改浏览器 URL 地址栏
阅读量:5997 次
发布时间:2019-06-20

本文共 1181 字,大约阅读时间需要 3 分钟。

hot3.png

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

转载于:https://my.oschina.net/wmsjhappy/blog/272554

你可能感兴趣的文章
MySQL计算字段
查看>>
【C#】【Thread】Semaphore/SemaphoreSlim信号量
查看>>
ASP.NET几种页面数据绑定的用法及区别: <%#、 <%=、 <% 、<%@
查看>>
全国省市XML
查看>>
ASP.NET 用 AjaxOptions 实现局部刷新
查看>>
Ubuntu13.04配置优化(三)<转贴>
查看>>
移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?...
查看>>
转:DNS拾遗
查看>>
【LeetCode】27. Remove Element (2 solutions)
查看>>
jQuery中一些不常用的方法属性【转载】
查看>>
再谈:jquery编写插件的方法
查看>>
docker应用-5(使用overlay 网络进行容器间跨物理主机通信)
查看>>
本地自旋锁与信号量/多服务台自旋队列-spin wait风格的信号量
查看>>
全景图制作详解
查看>>
JSP中的动态包含和静态包含的区别
查看>>
《转载》Python3安装Scrapy
查看>>
应对LTE测试复杂化及成本挑战 非信令测试将成主流
查看>>
Leetcode: Repeated DNA Sequence
查看>>
300. Longest Increasing Subsequence
查看>>
静态循环队列的相关操作及详解
查看>>