Window.history保存用户在一个会话期间的站点訪问记录,用户每次訪问一个新的URL即创建一个新的历史记录。

history.go()、history.back()、history.forward()

history.back()和history.forward()分别表示向后一页和向前一页。

history.go(num)表示向前或向后翻多少页。num为正数表示向前翻。为负数则向后翻。

History.back()等价于history.go(-1),history.forward()等价于history.go(1)。

运行这三个中的任一方法,触发浏览器的popstate事件,假设仅仅是hash部分发生变化。还可能同一时候触发hashchange事件。

改动站点路径并创建新的历史记录

history.pushState(statedata, title, url);

參数URL必须和当前URL同源。否则会报错。仅仅能够改动URL中路径、井号之后的片段(即hash)或者URL中问号(?)之后的查询区段。

每运行一次pushState()用新的URL替换掉当前URL。即地址栏URL会变,window.location.href也会变,同一时候创建一个新的历史记录。但运行pushState()永远不触发hashchange事件。

參数statedata能够是不论什么被序列化的数据。这些数据被保存在用户硬盘上。但状态数据有限制大小,比方Firefox仅仅同意640KB字符。

使用pushState()的优点:仅仅改URL的hash部分,window.location使用的是同一个document。

兼容性问题

pushState直到IE10才被支持,在早版本号的IE中仅仅能通过改动window.location=”#foo”完毕。但这样会触发hashchange事件。

改动站点路径但不创建新的历史记录

看标题就知道了,replaceState()和pushState()的唯一差别是不创建新的历史记录。而是直接改动当前历史记录。

history.replaceState(stateData, title, url);

历史记录状态

有两种方式能够訪问历史訪问记录的状态信息,history.state返回历史訪问堆栈最顶端的记录的状态;而PopStateEvent.state值有在PopStateEvent事件触发的时候在事件监听中才干訪问。

State的默认值在不同浏览器可能不同。比方IE10下面默认是undefiend,但IE10和IE11默认是null。

HTML5推荐使用nul为默认值。

事件

popstate事件

调用history.back()、history.forward()、history.go()等方法。会触发popstate事件,单纯调用pushState()或replaceState()不触发popstate事件。

訪问事件的state属性可获取当初pushState()或replaceState()设置的状态数据。

具体解释window.history的更多相关文章

  1. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. js pjax 和window.history.pushState,replaceState

    原文:http://blog.linjunhalida.com/blog/pjax/ github:https://github.com/defunkt/jquery-pjax 什么是pjax? 现在 ...

  3. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL (转)

    在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变.并且能够很好的支持浏览器的前进和后退.不禁让人想问,是什么有这么强大 ...

  4. safari 浏览器window.history.go(-1)运行无效解决办法

    这几天做了几个手机端app的wap页面,做完之后发现一个问题,那就是ios系统下的safari浏览器不支持window.history.go(-1)..无语... 解决方法很简单!加上return f ...

  5. javascript:window.history.go(-1)

    history是你浏览过的网页的url(简单的说就是网址)的集合,也就是你的浏览器里的那个历史记录.它在js里是一个内置对象,就跟document一样,它有自己的方法,go就是其中一个. 这个方法的参 ...

  6. window.history 和 DWZ 框架

    DWZ框架的ajax请求返回的一般都是一个HTML片段,整个页面是由一个个HTML片段组成的,可以由TAB切换其内容,但是只有一个body和HEAD,一般head 和 菜单栏是不会动的. 今天遇到一个 ...

  7. window.history.pushState与ajax实现无刷新更新页面url

    ajax能无刷新更新数据,但是不能更新url HTML5的新API: window.history.pushState, window.history.replaceState 用户操作history ...

  8. javascript宿主对象之window.history

    window.historys属性允许我们操作同一个浏览器回话中的已访问页面,例如我们可以看到在这之前我们浏览页面的数量: window.history.length 由于隐私保护,我们无法获取这些页 ...

  9. 由window.history.back()引发的问题

    由window.history.back()引发的问题 编写人:CC阿爸 2015-1-30 今天在这里,我想与大家一起分享由windows.history.back()引发的问题,笔者在实际开发当中 ...

随机推荐

  1. win32应用程序和win32控制台应用程序的区别

          win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的.而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序. 后续答案: Win32 Appl ...

  2. Beautiful Soup 4.2.0 doc_tag、Name、Attributes、多值属性

    找到了bs4的中文文档,对昨天爬虫程序里所涉及的bs4库进行学习.这篇代码涉及到tag.Name.Attributes以及多值属性. ''' 对象的种类 Beautiful Soup将复杂HTML文档 ...

  3. linux下ls出现文件的后缀有@,* ,/之类的解释

    ls -Fafptool*  img_maker*    lzcmp@     lzfgrep@   lzma*         lzmore*         node-pre-gyp@bower@ ...

  4. map函数的应用:UVa156-Ananagrams

    Ananagrams Most crossword puzzle fans are used to anagrams - groups of words with the same letters i ...

  5. Luogu 2216 [HAOI2007]理想的正方形 (单调队列优化)

    题意: 给出一个 N×M 的矩阵,以及一个数值 K ,求在给定的矩阵中取出一个 K×K 的矩阵其中最大值减去最小值的最小值. 细节: 没有细节来发暴力走天下,20分也是分啊~~~ QAQ. 分析: 感 ...

  6. Git常用的基本操作

    一.如何学习git指令 1.查看帮助:git help2.查看指定命令:git help clone3.搜索关键字:/chone 4.退出帮助文档:输入Q 二.常见命令 1.初始化git本地仓库:先进 ...

  7. 00031_ArrayList集合中常用的方法

    1.ArrayList集合提供的一些常用方法 import java.util.ArrayList; public class ArrayListDemo01 { public static void ...

  8. pytest分布式执行(pytest-xdist)

    前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟.如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候, 我们会用测试人力成本换取时间成本,这个时候多找 ...

  9. [android 开发篇] 易白教程网址

    http://www.yiibai.com/android/android_bluetooth.html

  10. 【bzoj4930】棋盘 费用流

    题目描述 给定一个n×n的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置(x,y),(u,v)能互相攻击当前仅 当满足以下两个条件: 1:x=u或y=v 2:对于(x,y)与(u,v)之间 ...