操作H5手機(jī)端底部webview自帶返回

相關(guān)基礎(chǔ)知識(shí)

vue組件的生命周期

vue生命周期

瀏覽器歷史記錄

popstate: 當(dāng)活動(dòng)歷史記錄條目更改時(shí),將觸發(fā)該事件。如果被激活的歷史記錄條目是通過(guò)對(duì)history.pushState()的調(diào)用創(chuàng)建的,或者受到對(duì)history.replaceState()的調(diào)用的影響,popstate事件的state屬性包含歷史條目的狀態(tài)對(duì)象的副本。
history.pushState():添加歷史記錄條目
history.replaceState():修改歷史記錄條目
注意:
調(diào)用history.pushState()或history.replaceState()不會(huì)觸發(fā)popstate事件。只有在做出瀏覽器動(dòng)作時(shí),才會(huì)觸發(fā)該事件,如用戶點(diǎn)擊瀏覽器的回退按鈕(或者在Javascript代碼中調(diào)用history.back())。
pushState() 絕對(duì)不會(huì)觸發(fā) hashchange 事件,即使新的URL與舊的URL僅哈希不同也是如此。

流程

不能依賴(lài)vue的生命周期,需要配合監(jiān)聽(tīng)瀏覽器的popstate,和使用pushState完成

// 添加一條返回跳轉(zhuǎn)的歷史記錄
window.history.pushState(stateObj, title, url);
// 觸發(fā)返回的時(shí)候直接跳轉(zhuǎn)到希望跳轉(zhuǎn)的頁(yè)面
window.onpopstate = () => {
  this.$router.push({ path: url, query:  *** });
};

手速快連續(xù)點(diǎn)擊兩次返回,還是能保持不變需要配合生命周期來(lái)做了

// 在銷(xiāo)毀前根據(jù)query字段判斷
beforeDestroy() {
  this.$router.push({ path: url, query:  *** });
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容