返回顶部
首页 > 资讯 > 前端开发 > JavaScript >h5中history特性有哪些
  • 378
分享到

h5中history特性有哪些

2024-04-02 19:04:59 378人浏览 八月长安
摘要

这篇文章给大家分享的是有关h5中history特性有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 DOM中的window对象通过window.h

这篇文章给大家分享的是有关h5中history特性有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退。

HTML5开始,我们可以开始操作这个历史记录堆栈。

1.History

使用back(),forward(),和Go()方法可以在用户的历史记录中前进和后退

前进和后退

后退:

window.history.back();

这个方法会像用户点击了浏览器工具栏上的返回键一样。

同样的,也可以用以下方法产生用户前进行为:

window.history.forward();

移动到历史记录中特定的位置

你可以使用go()方法从session历史中载入特定的页面。

向后移动一页:

window.history.go(-1);

向前移动一页:

window.history.go(1);

类似的,你可以前进或者后退多页。

还可以通过检查浏览器历史记录的length属性来找到历史记录堆栈中的页面总数。

var numberOfEntries = window.history.length;

注意:IE支持向go()方法传URL参数。

2.添加和修改history实体

Gecko2开始引入 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

html5引入了histtory.pushState()和history.replaceState()这两个方法,他们允许添加和修改history实体。同时,这些方法会和window.onpostate事件一起工作。

使用history.pushState()方法来修改referrer,这种方法可以被用在经过修改状态后而为xmlHttpRequest对象创建的http header中。这个referrer会是创建XMLHttpRequest 时document的URL。

pushState 用于向 history 添加当前页面的记录,而 replaceState 和 pushState 的用法完全一样,唯一的区别就是它用于修改当前页面在 history 中的记录。

例子

假设http://mozilla.org/foo.html页面执行了一下js

var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html");

这种方法将会使url地址栏显示http://mozilla.org/bar.html,但浏览器不会加载bar.html页面,即使这个页面存在也不会加载。

现在再次假设用户继续访问http://google.com,然后点击后退。这时,url地址栏将会,http://mozilla.org/bar.html,页面会得到popstate事件(chrome),这个状态对象会包含一个stateObj的copy。这个页面看起来像foo.html。+

这时,我们再次点击后退,URL将变成http://mozilla.org/foo.html,document将得到另一个popstate事件和为null的state对象。这次的返回动作并没有改变文档的内容。(也许会过一会尝试加载…chrome)

pushState方法

pushState()有三个参数:state对象,标题(现在是被忽略,未作处理),URL(可选)。具体细节:

·        state对象 –state对象是一个javascript对象,它关系到由pushState()方法创建出来的新的history实体。用以存储关于你所要插入到历史 记录的条目的相关信息。State对象可以是任何JSON字符串。因为firefox会使用用户的硬盘来存取state对象,这个对象的最大存储空间为640k。如果大于这个数 值,则pushState()方法会抛出一个异常。如果确实需要更多的空间来存储,请使用本地存储。

·        title—firefox现在回忽略这个参数,虽然它可能将来会被使用上。而现在最安全的使用方式是传一个空字符串,以防止将来的修改。或者可以传一个简短的标题来表示state

·        URL—这个参数用来传递新的history实体的URL,注意浏览器将不会在调用pushState()方法后加载这个URL。但也许会过一会尝试加载这个URL。比如在用户重启了浏览器后,新的url可以不是绝对路径。如果是相对路径,那么它会相对于现有的url。新的url必须和现有的url同域,否则pushState()将抛出异常。这个参数是选填的,如果为空,则会被置为document当前的url。

某种意义上来说,调用pushState()方法很像设置了window.location = “#foo”,这两者都会创建和激活另一个关联到当前document的history实体,但pushState()另外有一些优点:

l 新的url可以是任何和当前url同域的url,相比之下,如果只设置hash,window.location会保持在同一个document。

l 如果不需要,你可以不修改url。对比而言,设置window.location = “#foo”;仅产生新的history实体,如果你当前的hash不是#foo

l 你可以将任意的数据与你的新history实体关联。使用基于hash的方法,需要将所有相关的数据编码为一个短字符串。

注意,pushState()方法不会使hashchange时间发生,即使是新旧url只是hash不同。

replaceState()方法

history.replaceState() 用起来很像pushState(),除了replaceState()是用来修改当前的history实体而不是创建一个新的。这个方法有时会很有用,当 你需要对某些用户行为作反应而更新一个state对象或者当前history实体时,可以使用它来更新state对象或者当前history实体的url。

popstate事件

当history实体被改变时,popstate事件将会发生。如果history实体是有pushState和replaceState方法产生的,popstate事件的state属性会包含一份来自history实体的state对象的拷贝

读取当前的state

当页面加载时,它可能会有一个非空的state对象。这可能发生在当页面设置一个state对象(使用pushState或者replaceState)之后用户重启了浏览器。当页面重新加载,页面将收到onload事件,但不会有popstate事件。然而,如果你读取history.state属性,将在popstate事件发生后得到这个state对象

var currentState = history.state;

感谢各位的阅读!关于“h5中history特性有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: h5中history特性有哪些

本文链接: https://lsjlt.com/news/81645.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • h5中history特性有哪些
    这篇文章给大家分享的是有关h5中history特性有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 DOM中的window对象通过window.h...
    99+
    2024-04-02
  • h5中有哪些新特性
    小编给大家分享一下h5中有哪些新特性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1. 新的Doc...
    99+
    2024-04-02
  • h5和css3的新特性有哪些
    h5和css3的新特性有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 h6新特性:拖拽释放A...
    99+
    2024-04-02
  • ES6中有哪些特性
    这篇文章给大家分享的是有关ES6中有哪些特性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.Object Shorthand新的对象声明方法允许我们可以不声明对象的 key :...
    99+
    2024-04-02
  • MySQL5.7中有哪些新特性
    本篇内容主要讲解“MySQL5.7中有哪些新特性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL5.7中有哪些新特性”吧!1、介绍 mysql5.7...
    99+
    2024-04-02
  • Redis6.0中新特性有哪些
    小编给大家分享一下Redis6.0中新特性有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Redis 6.0 来了Redis...
    99+
    2024-04-02
  • HTML5中有哪些新特性
    这篇文章主要为大家展示了“HTML5中有哪些新特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5中有哪些新特性”这篇文章吧。   当我们进行Web开...
    99+
    2024-04-02
  • PHP7中新特性有哪些
    这篇文章主要为大家展示了“PHP7中新特性有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP7中新特性有哪些”这篇文章吧。类型声明代码:class&nb...
    99+
    2024-04-02
  • history命令的特殊使用方法有哪些
    这篇文章主要介绍了history命令的特殊使用方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇history命令的特殊使用方法有哪些文章都会有所收获,下面我们一起来看看吧。history命令是一条非常实...
    99+
    2023-06-27
  • MySQL特性有哪些
    这篇文章主要介绍“MySQL特性有哪些”,在日常操作中,相信很多人在MySQL特性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL特性有哪些”的疑惑有所帮助!接...
    99+
    2024-04-02
  • HASH有哪些特性
    这篇文章主要为大家展示了“HASH有哪些特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HASH有哪些特性”这篇文章吧。哈希满足特性平衡性 :平衡性是指哈希的...
    99+
    2024-04-02
  • Node.js有哪些特性
    这篇文章主要讲解了“Node.js有哪些特性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js有哪些特性”吧!为何用Node对于我来说,对于团队来...
    99+
    2024-04-02
  • angularjs有哪些特性
    本文小编为大家详细介绍“angularjs有哪些特性”,内容详细,步骤清晰,细节处理妥当,希望这篇“angularjs有哪些特性”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
  • ecmascript5有哪些特性
    本篇内容主要讲解“ecmascript5有哪些特性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ecmascript5有哪些特性”吧! ...
    99+
    2024-04-02
  • Django特性有哪些
    这篇文章主要介绍了Django特性有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在正式开始学习Django框架前,我们不妨先来认识一下它的特性。我们可以简单的把特性分为...
    99+
    2023-06-14
  • VB.NET有哪些特性
    这篇文章将为大家详细讲解有关VB.NET有哪些特性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下面以VB2010为例加以说明。首先,在语言中取消连接符这个改动表面看很小,因为basic的开发者都知晓,原...
    99+
    2023-06-17
  • Flexbuilder4特性有哪些
    这篇文章主要介绍Flexbuilder4特性有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flexbuilder4的10个新特性MAX大会上HeidiWilliams用10分钟介绍了FlexBuilder4(G...
    99+
    2023-06-17
  • FlexBuilder有哪些特性
    这篇文章主要为大家展示了“FlexBuilder有哪些特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“FlexBuilder有哪些特性”这篇文章吧。【FlexBuilder】FlexBuild...
    99+
    2023-06-17
  • Flutter有哪些特性
    这篇文章主要介绍“Flutter有哪些特性”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter有哪些特性”文章能帮助大家解决问题。一、Flutter是什么Flutter是 Google 于 ...
    99+
    2023-06-27
  • graphql有哪些特性
    这篇文章主要介绍“graphql有哪些特性”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“graphql有哪些特性”文章能帮助大家解决问题。graphql 是一种用于 API 的查询语言,对你的 AP...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作