网站首页 > 教程分享 正文
历史状态管理是现在web应用开发的一个难点,用户每一次操作不一定会打开一个全新的页面,因此后退和前进按钮也就失去了作用,解决这个问题首选hashchange事件,通过该事件可以知道URL参数什么时候发生了变化用法如下:
window.onhashchange=function(){
alert(1)
}
而通过状态管理API,能够在不加载新页面的情况下改变浏览器的URL,为此需要使用history.pushState()方法,3个参数状态对象,新状态标题,和可选的相对URL。
history.pushState({name:"test"},"test","a.html");
注意只是pushState是不能改变网页标题的哦。
执行该方法后,新的状态信息就会被加入历史状态栈,但是浏览器并不会真的向服务器发送请求,第二个参数目前没有浏览器实现,因此也可以传入空字符串。
因为pushState()会创建新的历史状态,所以按下后退按钮会触发window对象的popstate事件。popstate事件对象有一个state属性,这个属性就包含第一个参数pushState()状态对象
window.onpopstate=function(e){
console.log(e.state)
}
注意浏览器加载的第一个页面没有状态,因此单击后退按钮返回浏览器加载的第一个页面时,之为null
要更新当前状态,可以调用replaceState();传入的参数与pushState()的前两个参数相同。调用这个方法不会再历史状态栈中创建新状态。只会重写当前状态。
history.replaceState({name:"re'd"},"red");
猜你喜欢
- 2024-10-28 一起学Vue:路由(vue-router)(vue路由两种方式)
- 2024-10-28 Vue实战065:ScrollBehavior实现路由记录滚动行为
- 2024-10-28 前端开发:带你深入理解路由两种模式
- 2024-10-28 深入浅出谈谈Vue 原理(简述vue原理)
- 2024-10-28 JavaScript禁止页面返回(js禁止浏览器后退)
- 2024-10-28 深度:从零编写一个微前端框架(前端框架从入门到微前端)
- 2024-10-28 2024——前端react进阶题(前端react必读书籍推荐)
- 2024-10-28 浅谈前端路由hash模式和history模式的区别
- 2024-10-28 vue3使用vue-router路由(路由懒加载、路由传参)
- 2024-10-28 手写vue路由(vue路由使用步骤)
你 发表评论:
欢迎- 最近发表
-
- 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 零基础安卓开发起步(一)(安卓开发入门视频)
- 教程:让你的安卓像Windows一样实现程序窗口化运行
- Android事件总线还能怎么玩?(事件总线有什么好处)
- Android 面试被问“谈谈架构”,到底要怎样回答才好?
- Android开发工具Parcel和Serialize
- Android 中Notification的运用(notification widget安卓)
- Android退出所有Activity最优雅的方式
- MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)