1. 程式人生 > 實用技巧 >vue 彈窗時 監聽手機返回鍵關閉彈窗(頁面不跳轉)

vue 彈窗時 監聽手機返回鍵關閉彈窗(頁面不跳轉)

vue 彈窗時 監聽手機返回鍵關閉彈窗(頁面不跳轉)

[注]:popstate 事件

  a.當活動歷史記錄條目更改時,將觸發popstate事件。

  b.如果被啟用的歷史記錄條目是通過對history.pushState()的呼叫建立的,或者受到對history.replaceState()的呼叫的影響,

popstate事件的state屬性包含歷史條目的狀態物件的副本。

  c.需要注意的是呼叫history.pushState()history.replaceState()不會觸發popstate事件。

  d.只有在做出瀏覽器動作時,才會觸發該事件,如使用者點選瀏覽器的回退按鈕(或者在Javascript程式碼中呼叫

history.back()

具體程式碼:

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 如果彈窗正在顯示就關閉彈窗, 如果不是就返回上一頁面