怎么改变url参数值,并且页面不刷新

小小小小沈先生
history.pushState 实现浏览器页面不刷新修改url链接
  最近遇到了在不刷新页面的情况下修改浏览器url链接的需求,遂求助于万能的度娘,最终通过history.pushState()完美解决问题。现在将我理解的一些内容分享一下,不对的地方欢迎大家指出。

在使用方法前首先需要了解它的兼容性,history.pushState()存在一定的兼容性问题,下图展示了部分浏览器的兼容情况,当然也可以通过 https://caniuse.com/#search=pushState 查看支持的浏览器版本。

history.pushState()的浏览器兼容性

在这里插入图片描述

简单介绍一下方法的相关信息:

history.pushState(stateObject, title, url);
history.pushState()主要是在不刷新浏览器的情况下,创建新的浏览记录并插入浏览记录队列中。

1.状态对象(stateObject)–stateObject是一个JavaScript对象,通过pushState方法可以将stateObject内容传递到新页面中。

2.标题(title)–几乎没有浏览器支持该参数,但是传一个空字符串会比较安全。

3.地址(url)–新的历史记录条目的地址(可选,不指定的话则为文档当前URL);浏览器在调用pushState()方法后不会加载该地址;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常。

在这里插入图片描述

下面以博客园官网为例具体说明:

打开博客园官网链接 https://www.cnblogs.com/ ,F12打开控制台并输入 window.history,可以得到window.history的相关信息,如下图所示,我们关注的主要是红框标出的三个信息,其中length为浏览记录队列长度,由于这个页面是新打开的,队列中只有当前页面链接相关信息,其值为1,state值将在下面介绍,pushState即history.pushState(),不多赘述。

接下来我们开始实现修改浏览器url链接,在控制台输入

window.history.pushState({status: 0} ,’’ ,’?data=1’)
在这里插入图片描述

执行后页面没有刷新,观察浏览器的链接变成了 https://www.cnblogs.com/?data=1,成功实现在不刷新页面的情况下修改浏览器url链接。pushState()的参数url有多种用法,除了上述用法,还可以是 ‘https://www.cnblogs.com/?data=1’ 、‘data/1’、’/data/1’ 、‘data=1’ 等等,大家可以自己尝试,同时需要注意url不支持跨域。

再次获取window.history信息,对比pushState方法执行前后window.history的变化可以发现,length变为2,这是因为方法创建了新的浏览记录,并将新的链接插入到浏览记录队列中;state值为{status: 0},与方法的参数stateObject相对应,实现了数据传递,新页面中可以通过执行 window.history.state.status ,得到参数中status的值0,最后附上结果如图所示:

砂锅大的拳头
关注 关注
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理url上的参数,且页面不会发生刷新行为
qq_42894622的博客
10-12 1254
【代码】处理url上的参数,且页面不会发生刷新行为。
在不刷新和不跳转页面情况下向URL中增删改query参数
万少博-FE
03-16 6252
最新更新时间:2020年09月08日14:10:19 《猛戳-查看我的博客地图-总有你意想不到的惊喜》 本文内容:在不刷新和不跳转页面情况下向URL中增删改query参数,原理,路由push到和当前相同的路由时,页面不跳转、不刷新。 方案一:原生操作 查询query参数 const{ location } = this.props; const { search } = location; let queryStr = search.slice(1);//age=30&name=wansh
浏览器编辑接口参数发送请求
最新发布
youhebuke225的博客
08-25 377
在接口上右击,并选择编辑重新发送
如何在JS中实现修改URL参数而不刷新页面
每天都想吃好吃的
12-19 1514
注意:上述代码仅适用于现代浏览器。如果需要兼容较旧的浏览器,可以考虑使用一些第三方库,如。方法将新的URL应用到浏览器历史记录中,从而实现修改URL参数而不刷新页面。方法来修改指定参数的值。最后,将修改后的参数设置回URL中,并使用。对象来修改URL参数,而不刷新页面。构造函数获取当前URL,然后创建一个。对象来处理URL参数。在上面的代码中,首先使用。
如何做到修改 url 参数页面刷新
hexadecimal_001的博客
06-15 453
后浏览器并不会立即加载这个 URL,但可能会在稍后某些情况下加载这个 URL,比如在用户重新打开浏览器时。如果新 URL 是相对路径,那么它将被作为相对于当前 URL 处理。状态对象可以是能被序列化的任何东西。原因在于 Firefox 将状态对象保存在用户的磁盘上,以便在用户重启浏览器时使用,我们规定了状态对象在序列化表示后有 640k 的大小限制。传递一个空字符串在这里是安全的,而在将来这是不安全的。方法传了一个序列化后大于 640k 的状态对象,该方法会抛出异常。该参数是可选的,缺省为当前 URL
前端如何改变url,但页面不发生刷新
weixin_50240716的博客
12-06 1339
方法一、hash 通过直接赋值location.hash来改变href,但页面不会发生改变 url: http://localhost:8080/Home/news url变为:http://localhost:8080/Home/news#aaa 方法二、HTML5的history模式:pushState 此方法的是压栈的方式把地址压进栈中,后进先出 url :http://localhost:8080/Home/news url变为:http://localhost:8080/Home/bbb 方
如何实现改变URL页面不进行刷新
qq_46071321的博客
01-03 461
URL的hash URL的hash也就是锚点(#),本质上是改变window.location的href属性。 我们可以通过直接赋值location.hash来改变href,但是页面不发生刷新。 HTML5的history模式:pushState HTML5的history模式:replaceState 这个方法不可以前进后退 HTML5的history模式:go history.back()等价于history.go(-1) history.forward()等价于history.go(1) 这
如何在不刷新页面情况改变URL
baidu_33164415的博客
01-11 655
如何在不刷新页面情况改变URL
路由传参与防止刷新数据丢失
weixin_62515884的博客
03-03 499
一.在router.js文件里引入两个组件 组件1和组件2 import Vue from "vue" import Router from 'vue-router' import zujian1 from './components/zujian1.vue' import zujian2 from './components/zujian2.vue' Vue.use(Router) const routes=[ { name:'', path:'',//设为默认组件
vue路由跳转携带参数拼接url后面,且刷新不丢失
ZXH0122的博客
07-28 1302
路由携带参数跳转时,参数拼接url后,刷新参数不丢失
详解React-Router中Url参数改变页面刷新的解决办法
08-27
React-Router 中 URL 参数改变页面刷新的解决办法 在 React-Router 中,使用 URL 传参功能可以实现动态路由的需求,但是默认情况下,当 URL 参数改变时,页面并不会刷新。这是因为 props 的改变并不会引起组件的...
React Router如何在url参数不同的情况下跳转页面不更新解决方案
01-20
当用户通过不同的产品ID导航到同一页面时,URL参数`productId`会改变,但React Router不会因为路径相同而重新渲染组件,从而导致页面内容无法更新。这是因为React Router默认仅在路由路径变化时才触发组件的重新渲染...
Vue下URL地址栏参数改变却不能刷新界面
夏已微凉、
05-20 3773
一、前言二、原因三、解决 一、前言 下拉选择,根据不同的值展示不同的内容,初次点击可以获取到相应的值,但是当第二次点击时,虽然地址栏的参数改变了,但页面内容并没改变URL 如下: http://127.0.0.1:8080/#/user?hobby=study http://127.0.0.1:8080/#/user?hobby=play 二、原因 vue项目中路由跳转默认采用hash的方式,而hash的变化不会导致浏览器发送请求到服务器; 将获取数据的的函数的执行放在了Vue生命周期函数 .
vue 获取url地址的参数_《前端实战总结》如何在不刷新页面情况改变URL
weixin_39632891的博客
11-20 661
由于公司最近有个需求是想让我们的get请求的参数都直接显示在浏览器url上,这样我们就可以直接通过复制url来显示对应的界面数据了。背景介绍由于我们常用的http请求一般是基于XHR对象的实现或者fetch实现,这种请求操作并不会触发浏览器url的变化,这样虽然也能正常请求数据并渲染到页面,但是如果用户在当前页面操作了某个get请求并得到了某条数据,想通过链接将当前看到的界面分享给其他人时,那么此...
js修改当前url所携带参数,不刷新当前页面
hsany330的专栏
03-31 1987
需求:JWT前后端分离,移动端H5首页通过url传递参数token,未登录时(app在url中未传递token参数),调取app原生登录回调得到token参数。 问题:回调得到token之后,从其他页面跳回首页。由于首页在初始换时默认取的url中的token,此时跳转回首页时url中并没有token,token无法保存下来,决定看看有没有方法可以修改首页url参数,在app原生登录返回时将token动态拼接在url中,并且不刷新页面。 对于原生js function changeURLParam(n
history对象,当前url添加参数且不刷新页面
m0_64562972的博客
04-08 2382
history对象,当前url添加参数且不刷新页面
前端js添加修改URL参数的方法,修改地址后,可以不刷新页面
xnzsxnzs的专栏
07-14 4206
最近做项目,发现之前搞的replaceParamVal()方法有bug,重新修改后,应该完美了。上代码//URL替换指定传入参数的值,paramName为参数,replaceWith为新值,isRefresh为是否刷新页面,0表示不需要刷新,这个最牛举例:https://www.aazj.cn/index.html?popenid=757522579上面这个地址js调用方法:replaceParamVal("popenid","600",0),就会在地址栏上修改参数popenid=600,不会刷新页面,新地
PC端/移动端,浏览器通过地址修改参数访问H5页面刷新情况
passWordEnterX的博客
11-10 782
2、需要获取数据的函数在生命周期中 ,首次页面加载已挂载执行完成,当修改url参数时由于路由模式是hash,因而并没有从新读取url,而是在browser的url缓存中读取上一个页面的数据。2、如browser首次已访问链接一,粘贴链接二到URL窗口并回车,只会更新URL窗口显示链接二,并不会刷新页面内容和访问后台;3、鼠标focuse到URL窗口,不对URL内容做任何改变,回车,页面内容刷新正确。粘贴变更的URL只会刷新URL窗口,不。1、PC端,browser首次访问链接一或链接二,均可正常加载;
vue 刷新页面改变参数
09-04
在Vue中,刷新页面改变参数有几种方法可以实现。 1. 使用Vue Router:Vue Router是Vue.js官方的路由管理器,...如果你想实现在不刷新页面情况改变参数,可以考虑使用Vue的响应式数据来实现,而不是改变URL参数
写文章

热门文章

  • RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化 30505
  • oracle求平均值 22696
  • @JsonIgnore 15968
  • tree.render is not a function 8916
  • PostgreSQL创建表并设置主键自增 8025

分类专栏

  • 技巧 37篇
  • Spring Cloud微服务 7篇
  • Vue 3篇
  • 注解 13篇
  • 框架 85篇
  • Linux 10篇
  • 线程 14篇
  • 数据库 28篇
  • 缓存 1篇
  • web 34篇
  • 集合 12篇
  • 设计模式 4篇

最新评论

  • RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化

    PG_8: 你家里

  • File.separator用法

    DorisLo: 懂啦表情包

  • RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化

    lackluster_lxclk: 不想搭理你,你还没完没了了?

  • RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化

    PG_8: 说出来可能让你失望了 浙大紫金港校区

  • RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化

    丿雨霁灬忆未稀丶: 你什么学校

最新文章

  • 怎么为一个没有外网的Linux服务器(完全的裸机)配置web环境
  • springboot的schedule和quartz两种定时任务的设置
  • redirect重定向的url中存在中文字符转码
2020年31篇
2019年368篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司天津seo网站优化大概多少钱陕西价格低的网站优化哪家不错宁波网站优化外包知名的电商网站优化普陀区谷歌网站优化价格荆门市网站线上推广优化优化网站的模板优化排名网站哪家好高手黑客优化网站常德专业网站优化哪家好下城区网站优化排名价格企石网站关键词优化营销型网站优化方案松江区企业网站优化定制网站排名优化AS去忠魁互联烟台网站关键字优化网站首页关键词优化哪家好苏州seo网站优化最专业深圳企业网站优化经验明港网站优化公司提高网站访问速度的优化方案网站优化策略案例网站优化推广教程南宁网站优化推广黄石本地网站优化公司网站结构优化要点外贸网站如何进行外链优化东台淄博网站优化方案seo网站优化软件 s站群网站快速排名优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化