浏览器中的历史栈


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/06/23/%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%9A%84%E5%8E%86%E5%8F%B2%E6%A0%88/

摘要

本文主要讲述了:

  1. 实例属性
  2. 方法
  3. 事件

正文

历史栈是针对于同一个标签页而言的,刷新当前页面对历史栈不会有任何影响

实例属性

history.state

指向栈顶元素的state

如果栈顶元素没有state,值为null

history.length

历史栈的长度

方法

history.pushState()

将一个元素压入栈顶

元素:

  • state:必填,一个可以被序列化的对象
  • unused:必填,由于历史遗留问题,现阶段传入空字符串即可
  • url:可选,若存在,则必须和当前网站同源

注:即使提供了url,浏览器只会先更新地址栏,并不会马上发起 HTTP 请求

history.replaceState()

替换栈顶的元素

事件

window.onpopstate

触发时机:在当前页面使用过history.pushState()history.replaceState()之后,又在当前页面进行了页面导航

示例:页面导航

  • history.back()
  • history.forward()
  • history.go()history.go(0)除外,它相当于刷新)
  • 用户点击【返回】
  • 用户点击【前进】

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/06/23/%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%9A%84%E5%8E%86%E5%8F%B2%E6%A0%88/


本文对你有帮助?请支持我


支付宝
微信