關於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

相關文章
相關標籤/搜索