window.location.replace 和 window.location.href 的区别

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

昨天在处理一个具有返回功能的按钮时花了一些时间,就是返回到用户搜索的前一页,我用的是 window.location.go(-1),这就是正正经经的浏览器返回到前一条浏览记录的做法。可是有几个返回按钮却一直失灵,点击之后,可以看到浏览器刷新,但是还是停留在原来的页面。
仔细查看代码,终于发现了原因。就是用户从上一个页面 a 跳转到目前看到的这一个页面 c,其实中间还有一个页面 b,只是用户看不到,因为从 a 跳转到 b 后,执行 b 的脚本,b 的脚本有下面这句:

window.location.href = "c.html";

所以页面嗖的一下就跳到了 c 页面,但是浏览器记录却记录了三个页面:a, b, c.
这个时候点击返回按钮从 c 就是返回到 b,而 b 又会马上跳转到 c,所以就出现了点击返回按钮,页面刷新后,还是停留在原来页面的情况。
解决方案就是把上面重定位的脚本换成下面这句:

window.location.replace("c.html");

window.location.replace(url) replaces the current location in the address bar by a new one. The page that was calling the function, won’t be included in the browser history. Therefore, on the new location, clicking the back button in your browser would make you go back to the page you were viewing before you visited the document containing the redirecting JavaScript.

window.location.replace(url) 将目前浏览器的地址替换掉,调用这个方法的网页,将不会被写入浏览记录。所以,网页 b 不会被写入浏览记录,从网页 a 经过 b 跳转到 c,再点击返回按钮将跳转到 a.

解决 location.href 引发的状态取消问题 在 Web 开发中,我们经常使用 location.href 来进行页面跳转。然而,有时候使用这种方式可能会引发状态取消的问题,导致页面无法正常加载。本文将介绍 location.href 引发的状态取消问题,并提供解决方法,确保页面跳转不会造成状态取消其他异常情况。状态取消问题通常发生在使用 location.href 进行页面跳转时。当页面正在加载过程中,如果通过 location.href 进行跳转,可能会导致当前页面的加载被取消,而跳转目标页面也无法加载成功。 阅读详情

相关推荐

window.location.hrefwindow.location.replace

说到这两个的使用区别,就得结合window.history.go(-1);wondow.history.back();这两个方法的机制了。 这两个方法是根据服务器记录的请求决定该跳到哪个页面。   window.location.href("test.jsp");是向服务器发送请求的跳转 window.location.replace("test.jsp");是不向服务器发送请求的跳转

oscar999的专栏 3438

window.location.href()/replace()/reload() -- 页面跳转+替换+刷新

window.location.href()/replace()/reload() -- 页面跳转+替换+刷新

m0_58293192的博客 1万+

数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)

文章目录引述斯皮尔曼相关系数(spearman)定义 引述 经过之前几节的学习,我们了解并掌握了皮尔逊相关系数。在学习中我们发现,皮尔逊相关系数的使用条件相当苛刻:两组变量必须是连续数据、呈现正态分布,且两者间必须成线性关系。如果我们在数学建模中拿到一组数据无法满足以上条件,那么有没有其他的方法去判断两组变量之间的相关性呢?答案是肯定的,它就是斯皮尔曼相关系数(spearman). 斯皮尔曼相关系...

6万+

JS使用window.location.replace删除上一条浏览器历史记录的方法(登录回退)

如果用户登录状态过期,或者没有登录,当用户登录之后回退上一个页面的时候,就会回退到登录页面,这样的体验不是很好。`history`不支持删除历史记录的方法,当从当前页面跳转到下一个页面的时候可以用以下方法,用新的文档替换当前文档就相当于删除了当前页面的历史记录。本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。

小马甲 4349

JavaScript用来改变浏览器地址栏 URL 的方法

JavaScript用来改变浏览器地址栏 URL 的方法

dfc_dfc的博客 1629

window.location.href,window.location.replace(),window.location.reload() 三者的区别

总是在资料上看到 window.location.hrefwindow.location.replace区别,但是不是很明白,今天彻底明白了。简单说说: 有3个jsp页面(1.jsp, 2.jsp, 3.jsp),进系统默认的是1.jsp ,当我进入2.jsp的时候, 2.jsp里面用window.location.replace("3.jsp");与用window.location.hre

2341

window.location.replacewindow.location.href区别

有3个页面 a,b,c 如果当前页面是c页面,并且c页面是这样跳转过来的:a->b->c 1:b->c 是通过window.location.replace("..xx/c")   此时b页面的url会被c页面代替,并且点击后退按钮时会回退到a页面(最开始的页面) 2:b->c是通过window.location.href("..xx/c")    此时b页面的路径会被c页面代替,但

坑里水库的博客 5万+

window.location.hrefwindow.location.replace区别

 

也想快乐的生活 1223

window.location.replacewindow.location.href区别

简单说说:有3个jsp页面(1.jsp, 2.jsp, 3.jsp)。 进系统默认的是1.jsp ,当我进入2.jsp的时候, 2.jsp里面用window.location.replace("3.jsp");与用window.location.href("3.jsp");从用户界面来看是没有什么区别的, 但是当3.jsp页面有一个“返回”按钮,调用window.histor...

weixin_30454481的博客 87

window location replacewindow location href区别

有3个页面 a,b,c 如果当前页面是c页面,并且c页面是这样跳转过来的:a->b->c 1:b->c 是通过window.location.replace("..xx/c")此时b页面的url会被c页面代替,并且点击后退按钮时会回退到a页面(最开始的页面) 2:b->c是通过window.location.href("..xx/c")此时b页面的路径会...

lovelessdream的博客 285
上一篇: Linux 如何使用 wget 下载整个网站
下一篇: Javascript 最佳实践 10 条建议
前端dog
博客等级 码龄10年 42粉丝 69原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值