vue 彈窗時 監聽手機返回鍵關閉彈窗(頁面不跳轉)
阿新 • • 發佈:2020-08-10
vue 彈窗時 監聽手機返回鍵關閉彈窗(頁面不跳轉)
[注]:popstate 事件
a.當活動歷史記錄條目更改時,將觸發popstate事件。
b.如果被啟用的歷史記錄條目是通過對history.pushState()的呼叫建立的,或者受到對history.replaceState()的呼叫的影響,
popstate事件的state屬性包含歷史條目的狀態物件的副本。
c.需要注意的是呼叫history.pushState()
或history.replaceState()不會觸發popstate事件。
d.只有在做出瀏覽器動作時,才會觸發該事件,如使用者點選瀏覽器的回退按鈕(或者在Javascript程式碼中呼叫
)
具體程式碼:
1. 配置路由meta的keepAlive屬性 , 再App中 使用 keep-alive 標籤 將當前頁面加入快取中
2. 開啟彈窗呼叫window.history.pishState()函式
3. activated生命週期 監聽popstate 事件 ,deactivated 生命週期 移除popstate事件
4. 配置事件監聽函式
jq操作
function pushHistory() { var state = { title: "title", url:"#" }; window.history.pushState(state, "title", "#"); } window.addEventListener("popstate", function(e) { if ($("#agreementContent").css('display') == "block"){ $("#agreementContent").hide(); } else{ history.back() } }, false); 彈窗顯示時呼叫pushHistory()方法 , 文件就緒事件中監聽 popstate 如果彈窗正在顯示就關閉彈窗, 如果不是就返回上一頁面