关于APP内嵌H5后退按钮问题

最近都在用vue作APP内嵌H5页面,在APP点击后退时若是在路由中跳转过屡次 点后退会后退不少次才能退出页面 用户体验不好。


下面来讲下解决方法
由于hisotry模式官方说须要服务器配置因此路由一直在用hash模式,针对这一需求须要了解h5新加的history模式前端

H5引入了history.pushState()和history.replaceState()这两个方法,他们容许添加和修改history实体。同时,这些方法会和window.onpostate事件一块儿工做。vue

pushState方法用一个新的url取代当前页面的url并把当前页面的url存进历史记录,浏览器

replaceState只用新url取代当前页面的url,可是不把当前页面的url存进历史记录服务器

pushState()有三个参数:state对象,标题字符串(如今没有浏览器支持),URL字符串(可选,若是为空,设置为当前页面的url)post

只有前进后退能够触发popstate事件,对于不是经过pushState,replaceState两个方法产生的url,state对象为空
因此首先监听一下popstate事件在监听事件里直接调回退的方法url

window.addEventListener("popstate", function(e) {
    window.history.back()
  }, false);

这样就能够直接退出当前页面了spa

还要history在服务器端渲染不出来的问题 前端其实也能够用一种笨方法解决的code

把你服务器的地址直接卸载路由里,根路径要把你页面的名字带上,就像这样对象

clipboard.png

由于在APP里因此也不存在刷新页面找不到的问题,就不须要服务端来帮忙啦~
但愿能够帮到有相似需求的小伙伴,有更好的方法的大神也来指导下blog

相关文章
相关标签/搜索