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

本文详细解析了在JavaScript中使用location.replace()与location.href()进行页面跳转时,页面跳转与浏览器历史记录回退行为的不同表现,通过实例展示了为何在特定场景下使用一种方式而非另一种方式。

本文摘自:http://i.mtime.com/zhd/blog/883870

有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.history.go(-1);wondow.history.back();方法的时候,一点这个返回按钮就要返回2.jsp页面的话,区别就出来了,当用window.location.replace("3.jsp");连到3.jsp页面的话,3.jsp页面中的调用window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.jsp 。当用window.location.href("3.jsp");连到3.jsp页面的话,3.jsp页面中的调用window.history.go(-1);wondow.history.back();方法是好用的,会返回2.jsp。因为window.location.replace("3.jsp");是不向服务器发送请求的跳转window.history.go(-1);wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以会跳到系统默认页面1.jsp 。window.location.href("3.jsp");是向服务器发送请求的跳转window.history.go(-1);wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以就可以返回到2.jsp。


自己的理解:

在2.jsp页面用window.location.replace("3.jsp");应该是用3.jsp替换2.jsp所以调用window.history.go(-1);window.history.back();会跳到1.jsp,也是上面说的不会向服务器发送请求。

window.location.href('3.jsp');以前用这个更多的是表单同步提交,这样会提交到后台,由后台来选择跳转到具体哪个页面。使用这种方式调用window.history.go(-1);或者window.history.back();会根据服务器记录的请求来返回到上一个页面。



菜鸟第一次发帖,做个纪念!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值