使用JavaScript修改浏览器URL地址栏的实现代码

现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器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://www.mzph.cn/news/542763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ruby array_在Ruby中使用Array.pop和Array.shift方法从Array中删除元素

ruby arrayRuby Array.pop和Array.shift方法 (Ruby Array.pop and Array.shift methods) If you are reading an article that is related to deleting elements from the instance of Array class then it is expected from you that you are aware of the basic things relat…

python语言百分号的含义_python中百分号意思的是什么

python中百分号意思的是什么 发布时间&#xff1a;2020-07-09 16:38:13 来源&#xff1a;亿速云 阅读&#xff1a;158 python中百分号意思的是什么&#xff1f;很多新手对此不是很清楚&#xff0c;为了帮助大家解决这个难题&#xff0c;下面小编将为大家详细讲解&#xff0c;有…

MATLAB学习——矩阵

矩阵矩阵运算算术运算基本算术运算点运算关系运算逻辑运算元素处理取整取模和取余矩阵分析与处理矩阵行列式、秩与迹、特征值分析矩阵的逆与线性方程组求解矩阵的分解与变换矩阵运算 算术运算 基本算术运算 #检查矩阵阶数[n,m] size(A),l length(A) A [1 2;3 4] B [1 1;…

sqldeveloper mysql迁移_通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤

通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤发布时间&#xff1a;2020-06-08 15:52:18来源&#xff1a;51CTO阅读&#xff1a;210作者&#xff1a;三月本篇文章给大家主要讲的是关于通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤的内容&#xff0c…

未能成功加载扩展程序_【JAVA虚拟机(JVM)精髓】09-几种不同的类加载器

持续更新JVM相关知识&#xff0c;敬请关注&#xff1a;Java虚拟机精髓专栏​zhuanlan.zhihu.com上一节说了下类加载器和类加载过程。这一节我们看下几种不同的类加载器。JVM支持的类加载器有两类&#xff0c;分别是引导类加载器和自定义加载器。这里的自定义自定义加载器&#…

Oracle .事物,提交,回滚

事物&#xff08;transaction&#xff09; -->作为单个逻辑工作单元执行的一系列操作&#xff08;要么全部成功要么全部失败&#xff09; 提交&#xff08;commit&#xff09; -->系列操作全部成功的场合才会执行 回滚&#xff08;rollback&#xff09; -->系列操作其…

perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次

perl 哈希数组的哈希Prerequisite: Hashing data structure 先决条件&#xff1a; 哈希数据结构 Problem statement: 问题陈述&#xff1a; Find the first element occurring K times in the array. 查找数组中出现K次的第一个元素。 Example: 例&#xff1a; Input array…

图片md5修改工具_如何修改视频和图片的MD5,用电脑自带的命令

首先说下&#xff0c;md5到底是啥&#xff0c;它是一段固定长度的数据。无论原始数据是多长或多短&#xff0c;其MD5值都是128bit。另外md5是确定性&#xff0c;一个原始数据的MD5值是唯一的&#xff0c;同一个原始数据不可能会计算出多个不同的MD5值&#xff1b;类似人类的身份…

iOS - UISearchController

前言 NS_CLASS_DEPRECATED_IOS(3_0, 8_0, "UISearchDisplayController has been replaced with UISearchController")interface UISearchDisplayController : NSObjectavailable(iOS, introduced3.0, deprecated8.0, message"UISearchDisplayController has bee…

浮点数转换为整数四舍五入_定义宏以将浮点值四舍五入为C中最接近的整数

浮点数转换为整数四舍五入Given a float value and we have to round the value to the nearest integer with the help of Macro in C language. 给定一个浮点值&#xff0c;我们必须借助C语言中的Macro将其舍入到最接近的整数。 Macro Definition: 宏定义&#xff1a; #def…

c语言遍历文件内容_C语言学习第28篇---动态内存分配剖析

为什么C语言要动态分配内存的意义&#xff1f;1.C语言中的一切操作都是基于内存的2.变量和数组都是内存的别名---内存分配由编译器在编译期间决定的---定义数组的时候必须指定数组长度---数组长度是在编译期就必须确定的需求&#xff1a;程序运行的过程中&#xff0c;可能需要使…

重启mysql的命令 linux_linux重启mysql命令

如何启动/停止/重启MySQL一、 启动方式1、使用 service 启动&#xff1a;service mysqld start2、使用 mysqld 脚本启动&#xff1a;/etc/inint.d/mysqld start3、使用 safe_mysqld 启动&#xff1a;safe_mysqld&二、停止1、使用 service 启动&#xff1a;service mysqld s…

tomcat 多项目多HOST配置

一、场景&#xff1a;使用一个tomcat部署多个项目&#xff0c;并且分别使用不同域名进行访问。二、详细配置tomcat/conf/server.xml 中写<Engine name"Catalina" defaultHost"localhost">***********************************<Host name"biz…

javascript原型_使用JavaScript的示例报告卡Web应用程序原型

javascript原型Hi! At times, beginners always find it hard getting the application of the theory they learn In programming or a particular language. 嗨&#xff01; 有时&#xff0c;初学者总是很​​难在编程或特定语言中应用他们学到的理论。 In this article, we…

vb.net cad 块表最后的实体_21个绘图命令+7个技巧,3分钟让你成为CAD高手

绘制图纸需要用到CAD&#xff0c;CAD制图在生活中也是广泛运用&#xff0c;那么学习CAD到底难不难呢&#xff1f;在这里要告诉CAD新手们&#xff0c;世上无难事&#xff0c;可以用3分钟让你成为CAD高手。21个绘图命令A&#xff1a;绘圆弧B&#xff1a;定义块C&#xff1a;画圆D…

本地tomcat启动war包_「shell脚本」懒人运维之自动升级tomcat应用(war包)

准备&#xff1a;提前修改war包里的相关配置&#xff0c;并上传到服务器&#xff1b;根据要自动升级的tomcat应用修改或添加脚本相关内容&#xff1b;tomcat启动脚本如是自己写的&#xff0c;要统一格式命名&#xff0c;如&#xff1a;xxx、xxxTomcat 等&#xff1b;拿到生产使…

python将txt转为字符串_python做第一只小爬虫

“受尽苦难而不厌&#xff0c;此乃修罗之路”本文技术含量过低&#xff0c;请谨慎观看之前用R语言的Rcurl包做过爬虫&#xff0c;给自己的第一感觉是比较费劲&#xff0c;看着看着发际线就愈加亮眼&#xff0c;最后果断丢之。不过好的是和python爬取原理基本一致&#xff0c;且…

c#查找列表指定元素的索引_在集合的指定索引处插入元素 在C#中

c#查找列表指定元素的索引Given a Collection<T> of Integer and we have to insert an element at given index. 给定Integer的Collection <T>&#xff0c;我们必须在给定的索引处插入一个元素。 To insert an element in Collection<T>, we use Insert() …

跨域技术(JSONP与CROS)

JSONP 我们发现&#xff0c;Web页面上调用js文件时不受是否跨域的影响&#xff0c;凡是拥有"src"这个属性的标签都拥有跨域的能力&#xff0c;比如<script>、<img>、<iframe>。那就是说如果要跨域访问数据&#xff0c;就服务端只能把数据放在js格式…

python3 array为什么不能放不同类型的数据_小白入门Python数据科学全教程lt;一gt;...

前言本文讲解了从零开始学习Python数据科学的全过程&#xff0c;涵盖各种工具和方法你将会学习到如何使用python做基本的数据分析你还可以了解机器学习算法的原理和使用说明先说一段题外话。我是一名数据科学家&#xff0c;在用SAS做分析超过5年后&#xff0c;我决定走出舒适区…