博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
history.pushState 添加浏览器历史记录
阅读量:6849 次
发布时间:2019-06-26

本文共 912 字,大约阅读时间需要 3 分钟。

最近在做一个H5商城项目,用到了支付宝跟微信的支付,但是遇到了以下的问题: 当前页面为提交订单页,包含了用户账号密码、买家留言、优惠券选择、支付方式选择等等,内容填好后点击提交订单跳转到对应支付方式的支付页面,但是问题来了,假如用支付宝,在刚跳转到支付宝页面时不选择下一步,而是直接取消支付,用浏览器回退按钮返回到提交订单页,这时还可以点击提交订单来再次支付,但实际算是重复生成订单的bug了;而且对不同的手机,不同的浏览器在取消支付回退到提交订单页时,有的页面已经被刷新,还得用户重新输入内容才能提交。

为了解决提前取消支付造成的bug,就想到了取消支付后直接跳转到我的订单列表页面,在订单页可以查看刚下的订单详情,可以选择完成支付。

但是提前取消支付不会触发支付宝和微信设置的支付完成或者取消支付对应的跳转页面。通过百度一通搜索,发现了history.pushState完全可以解决此问题。

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

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

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

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

比如当前提交订单页面地址为 confirmOrder.jsp,使用

history.pushState({}, "MyOrder", "myOrder.jsp")复制代码

为当前浏览器添加一条myOrder.jsp的历史记录,提交订单后跳转到其他支付页面pay.jsp,这时按浏览器回退就会返回到myOrder.jsp页面。

详情可以参考:

转载于:https://juejin.im/post/5d01e3c8e51d45105d63a4f4

你可能感兴趣的文章
[李景山php]每天TP5-20170109|thinkphp5-Model.php-2
查看>>
在windows(64)下安装php开发环境wamp+yaf框架+phpstorm以及TortoiseGit
查看>>
淘宝的IP地址库
查看>>
ORACLE 建库过程总结
查看>>
Comparable与Comparator的区别(转载)
查看>>
我的友情链接
查看>>
window下从硬盘安装ubuntu双系统
查看>>
socket服务器与客户机的互动
查看>>
三种方法实现选项卡效果
查看>>
API网关(API Gateway)
查看>>
Zookeeper集群搭建和简单使用
查看>>
IntelliJ IDEA快捷键
查看>>
Xmanager 连接 AIX 系统
查看>>
java的锁机制
查看>>
如何避免项目管理黑洞-为什么要使用redmine
查看>>
[]+与[]表达式
查看>>
.Net平台下ActiveMQ入门实例
查看>>
C#语言获取控制面板“程序和功能”列表
查看>>
外网语音通信准备资料
查看>>
写字机器人开发之:python opencv linux下合作操作摄像头
查看>>