iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript history 对象详解
  • 780
分享到

JavaScript history 对象详解

2024-04-02 19:04:59 780人浏览 安东尼
摘要

目录1、路由导航2、历史状态管理api(1)hashchange 事件(2)popstate 事件(3)history.pushState() 方法(4)history.replac

前言:

  我们浏览一个网页时可能不太会注意网页前进后退这些操作,但是在开发时你是否想过页面之间的跳转经历了什么,浏览器时怎么保存的页面信息,重新返回上一个页面的时候是否需要重新加载页面呢,会有很对疑问,要想解决这些问题,首先需要知道浏览器中的window下的history对象,本文来详细总结一下该对象的相关知识点。

  history 对象表示当前窗口首次使用以来用户的导航历史记录。因为 history window 的属性,所以每个 window 都有自己的 history 对象。出于安全考虑,这个对象不会暴露用户访问过的 URL,但可以通过它在不知道实际 URL 的情况下前进和后退。

1、路由导航

  history.Go() 方法可以在用户历史记录中沿任何方向导航,可以前进也可以后退。这个方法只接收一个参数,这个参数可以是一个整数,表示前进或后退多少步。


 history.go(-1);// 后退一页

history.go(1);// 前进一页

history.go(2);// 前进两页 //

go() 有两个简写方法: back() 和 forward() 。

history.back();// 后退一页

history.forward();//前进一页

history 对象还有一个 length 属性,history.length == 1表示这是用户窗口中的第一个页面

 histroy的go方法,back方法、forWord方法以及用户在浏览器手动的前进后退按钮都会导致页面刷新后跳转。 

2、历史状态管理API

(1)hashchange 事件

  hashchange:history 对象的一个新特性是hashchange,会在页面 URL 的散列变化时被触发,开发者可以在此时执行某些操作。当URL的片段标识符更改时,将触发hashchange事件 (跟在#符号后面的URL部分,包括#符号)。而状态管理API 则可以让开发者改变浏览器 URL 而不会加载新页面。

比如:pushState和replaceState方法,页面并不会刷新,但是路由会发生改变。

(2)popstate 事件

  当活动历史记录条目更改时,将触发popstate事件。如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,popstate事件的state属性包含历史条目的状态对象的副本。需要注意的是调用history.pushState()history.replaceState()不会触发popstate事件。只有在做出浏览器动作时,才会触发该事件,如用户点击浏览器的回退按钮(或者在javascript代码中调用history.back()或者history.forward()方法)

(3)history.pushState() 方法

  pushState() 方法向当前浏览器会话的历史堆栈中添加一个状态(state)。这个方法接收 3 个参数:一个 state 对象、一个新状态的标题和一个(可选的)相对 URL。pushState() 方法执行后,状态信息就会被推到历史记录中,浏览器地址栏也会改变以反映新的相对 URL。URL栏显示新地址, 但是不会加载 页面,甚至不会检查页面是否存在,该方法会增加history.length

(4)history.replaceState()方法

  replaceState()方法修改当前历史记录实体。这个方法接收 3 个参数:一个 state 对象、一个新状态的标题和一个(可选的)相对 URL。replaceState() 方法执行后,将会更新当前的state对象或者当前历史实体的URL来响应用户的的动作,URL栏显示新地址, 但是不会加载 页面,甚至不会检查页面是否存在。该方法不会增加history.length


<body>
  <button onclick="handleNext()">点我到下一页</button><br>
  <button onclick="handleLast()">点我到上一页</button><br>
  <script>
    window.onload = function () {
      console.log(window.history);
    }
    window.addEventListener('hashchange', function () {
      console.log('The hash has changed!')
    }, false);
    window.addEventListener('popstate', (event) => {
      console.log("location: " + document.location + ", state: " + JSON.stringify(event.state));
    });
    function handleNext() {
      const state = { userId: "1234", page: "2" }
      const title = '二'
      const url = 'page2.html'
      window.history.pushState(state, title, url)
      console.log(window.history);
    }
    function handleLast() {
      const state = { userId: "1234", page: "21" }
      const title = '一'
      const url = 'page21.html'
      window.history.replaceState(state, title, url)
      console.log(window.history);
    }
  </script>
</body>

运行结果如下:

3、补充:URL的hash

  URL的hash也就是锚点(#), 本质上是改变window.locationhref属性,我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新,

如下图所示:

写在最后:

到此这篇关于JavaScript history 对象详解的文章就介绍到这了,更多相关history 对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript history 对象详解

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript history 对象详解
    目录1、路由导航2、历史状态管理API(1)hashchange 事件(2)popstate 事件(3)history.pushState() 方法(4)history.replac...
    99+
    2024-04-02
  • JavaScript之BOM location对象+navigator对象+history 对象
    目录一、location对象1、URL2、location 对象的属性3、location 对象的方法二、navigator对象三、history对象前言: window 对象给我们...
    99+
    2024-04-02
  • JavaScript history对象举例分析
    这篇文章主要介绍“JavaScript history对象举例分析”,在日常操作中,相信很多人在JavaScript history对象举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-21
  • javascript中History对象的示例分析
    这篇文章主要为大家展示了“javascript中History对象的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript中History对...
    99+
    2024-04-02
  • javascript中的History对象如何使用
    这篇文章主要介绍“javascript中的History对象如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript中的History对象如何使用”文章能帮助大家解决问题。leng...
    99+
    2023-06-17
  • JavaScript的Proxy对象详解
    目录一、Proxy 是什么?二、怎么用?1、使用 Proxy 的简单实例2、目标对象被正确修改3、使用 set handler 做数据验证4、扩展构造函数总结一、Proxy 是什么?...
    99+
    2024-04-02
  • JavaScript预解析,对象详解
    目录一、预解析1、变量预解析和函数预解析1、变量预解析2、函数预解析2、预解析案例二、对象1、创建对象的三种方式1、利用字面量创建对象2、利用newObject创建对象3、利用构造函...
    99+
    2024-04-02
  • JavaScript style对象与CurrentStyle对象案例详解
    1、Style对象 style对象代表一个单独的样式声明,可以从应用样式的文档元素访问Style对象。style对象获取的是内联样式,即元素标签中style属性的值。 例子: &...
    99+
    2024-04-02
  • JavaScript操作DOM对象详解
    一、DOM基础 DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。DOM描绘了一个层次化的节点树,运行开发人员添加...
    99+
    2024-04-02
  • JavaScript对象(详细)
    目录JavaScript对象1.定义2.对象的分类3.定义对象4.访问对象中的属性5.给对象添加属性6.删除对象属性7.Object根构造函数8.对象属性的检测9.引用传递和值传递1...
    99+
    2024-04-02
  • 详解JavaScript对象转原始值
    目录Object.prototype.valueOf()Object.prototype.toString()Symbol.toPrimitive对象转换原始值1. 预期被转换成字符...
    99+
    2024-04-02
  • 详解JavaScript中Arguments对象用途
    目录前言Arguments 的基本概念Arguments 的作用获取实参和形参的个数修改实参值改变实参的个数检测参数合法性函数的参数个数不确定时,用于访问调用函数的实参值遍历或访问实...
    99+
    2024-04-02
  • JavaScript的内置对象Date详解
    目录Date对象创建Date对象newDate()getDate()getDay()getMonth()getFullYear()getHours()getMinutes()getS...
    99+
    2024-04-02
  • 一文详解JavaScript数组对象和字符串对象
    目录一、数组对象1.数组类型检测2.添加或删除数组元素3.【案例】筛选数组4.数组排序5.数组索引6.【案例】数组去除重复元素7. 数组转换为字符串8.其他方法二、字符串对象1.字符...
    99+
    2023-05-17
    JavaScript字符串对象 JavaScript数组对象
  • Javascript Object对象类型使用详解
    目录1. 生成方法2. 操作属性2.1 读取2.2 赋值2.3 删除2.4 遍历2.5 判断属性是否存在3. with 语句总结1. 生成方法 对象是javaScript中的一种数据...
    99+
    2022-11-13
    JavaScript Object对象 JavaScript Object JS Object
  • JavaScript 内置对象 BigInt详细解析
    目录前言比较创建方法asIntN()asUintN()toLocaleString()toString()valueOf()前言 说起JavaScript中的内置对象,其实又很多,今...
    99+
    2024-04-02
  • 详解JavaScript面向对象实战之封装拖拽对象
    目录概述1、如何让一个DOM元素动起来2、如何获取当前浏览器支持的transform兼容写法3、如何获取元素的初始位置5、我们需要用到哪些事件?6、拖拽的原理7、我又来推荐思维导图辅...
    99+
    2024-04-02
  • Javascript对象及Proxy工作原理详解
    正文 这一章其实算是javascript的科普文章,其实这本书的读者一般都不会是入门者,因此按道理说应该不需要再科普才对。但是作者依旧安排了这一章,证明就是这一章内容与我们以为的对象...
    99+
    2022-11-13
    Javascript对象Proxy Javascript Proxy
  • JavaScript【History 对象、Cookie 对象 、封装cookie操作、apply、call和bind函数、面向对象简介、new 命令】(十八)
    目录 History 对象 History.back()  History.forward()  History.go()  Cookie 对象 来源地址:https://blog.csdn.net/m0_58719994/articl...
    99+
    2023-08-31
    前端 History 对象 Cookie 对象 new 命令 原力计划
  • JavaScript面向对象编程详细讲解
    这篇文章主要介绍“JavaScript面向对象编程详细讲解”,在日常操作中,相信很多人在JavaScript面向对象编程详细讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作