利用history和瀏覽器 刷新popstate狀態(tài) 去實(shí)現(xiàn)
每一次返回都會去歷史記錄回退 -1 所以就在進(jìn)入頁面之前 往歷史記錄里面多記錄一次當(dāng)前頁面的鏈接。然后再回退的時(shí)候監(jiān)聽刷新,去做一些事情。
1、掛載完成后,判斷瀏覽器是否支持popstate
mounted(){
? // 如果支持 popstate 一般移動端都支持了
? if (window.history && window.history.pushState) {
? ? // 往歷史記錄里面添加一條新的當(dāng)前頁面的url
? ? history.pushState(null, null, document.URL);
? ? // 給 popstate 綁定一個(gè)方法 監(jiān)聽頁面刷新
? ? window.addEventListener('popstate', this.backChange, false);//false阻止默認(rèn)事件
? }
},
2、頁面銷毀時(shí),取消監(jiān)聽。否則其他vue路由頁面也會被監(jiān)聽
? ? ?destroyed(){ window.removeEventListener('popstate', this.backChange, false);//false阻止默認(rèn)事件},
3、將監(jiān)聽操作寫在methods里面,removeEventListener取消監(jiān)聽內(nèi)容必須跟開啟監(jiān)聽保持一致,所以函數(shù)拿到methods里面寫
methods:{// BBBB.vue backChange() { const that = this; console.log("監(jiān)聽到了");}