1.背景介绍一些业务需求会需要拦截用户返回操作(浏览器、手机内嵌webview、微信网页等),做pop-up提示或用户行为记录上报操作。加粗2.代码实现方法:constcurrentUrl=location.hrefhistory.pushState(null,null,currentUrl)window.onpopstate=event=>{event.preventDefault()popStateEvent()}3.问题描述仅在chrome中有browserpopstate事件只能通过手动与页面交互(点击元素,滑动页面),然后点击浏览器的后退按钮来触发。如果进入页面后没有人为交互,则不会触发popstate事件。没有交互操作时,只能通过js返回方法(history.go(-1),history.back())触发,但是Safari浏览器没有这个问题。4、结语查阅了一些资料,发现这是chrome浏览器为了提升用户体验而特意做的一个功能,防止流氓网站禁止用户执行回滚操作,将用户困在当前网站。所以结论是:如果要在chrome或者基于chrome的webview中实现后退按钮拦截效果,需要在产品交互设计上做一些思考,至少需要用户主动进行一次交互操作。
