<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      vue處理關(guān)閉瀏覽器頁(yè)簽和關(guān)閉整個(gè)瀏覽器觸發(fā)事件調(diào)后端接口

      事項(xiàng)說(shuō)明 & 建議
      ?? 核心事件 beforeunload (用于提示用戶), unload (用于發(fā)送請(qǐng)求) 
      ?? 請(qǐng)求方法 推薦使用 fetch (設(shè)置 keepalive: true) 或 navigator.sendBeacon(),避免使用異步的axios 
      ?? 區(qū)分場(chǎng)景 可以嘗試通過時(shí)間差判斷是關(guān)閉還是刷新頁(yè)簽,但方法并非完全可靠 
      ?? 內(nèi)存管理 在Vue組件的 beforeDestroy 生命周期中移除事件監(jiān)聽,避免內(nèi)存泄漏 

      實(shí)現(xiàn)步驟與代碼示例:

      1.在Vue組件中添加事件監(jiān)聽
      通常在組件的 mounted 生命周期中添加事件監(jiān)聽,并在 beforeDestroy 中移除。

      export default {
        data() {
          return {
            beforeUnloadTime: 0,
            gapTime: 0,
            hasUnsavedChanges: true // 根據(jù)你的實(shí)際業(yè)務(wù)狀態(tài)設(shè)置
          };
        },
        mounted() {
          window.addEventListener('beforeunload', this.handleBeforeUnload);
          window.addEventListener('unload', this.handleUnload);
        },
        beforeDestroy() {
          // 組件銷毀時(shí),務(wù)必移除監(jiān)聽器
          window.removeEventListener('beforeunload', this.handleBeforeUnload);
          window.removeEventListener('unload', this.handleUnload);
        },
        methods: {
          // ... 其他方法見后續(xù)步驟
        }
      };

      2.處理 beforeunload 事件(可選)

      handleBeforeUnload(event) {
        if (this.hasUnsavedChanges) {
          // 以下代碼可以觸發(fā)瀏覽器默認(rèn)的確認(rèn)對(duì)話框
          event.preventDefault();
          event.returnValue = ''; // 這是標(biāo)準(zhǔn)屬性,但為了兼容舊瀏覽器,兩者都設(shè)置
          return '';
        }
      },

      3.處理 unload 事件并發(fā)送請(qǐng)求

      方法一:使用 fetch API

      handleUnload() {
        // 注意:這里無(wú)法處理服務(wù)器響應(yīng)
        fetch('/api/your-logout-endpoint', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify({ userId: 'user123' }),
          keepalive: true // 關(guān)鍵!確保請(qǐng)求在頁(yè)面卸載后也能發(fā)出
        });
      },

      方法二:使用 navigator.sendBeacon()

      handleUnload() {
        const data = JSON.stringify({ userId: 'user123' });
        // 注意:sendBeacon 默認(rèn)以 'text/plain' 內(nèi)容類型發(fā)送。
        // 如果需要以 'application/json' 發(fā)送,可以使用 Blob
        const blob = new Blob([data], { type: 'application/json; charset=UTF-8' });
        navigator.sendBeacon('/api/your-logout-endpoint', blob);
      },

       

      posted @ 2025-11-04 11:41  Oopy  閱讀(2)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲国产成人久久精品APP| 齐齐哈尔市| 色老头在线一区二区三区| 成人又黄又爽又色的视频| 啊┅┅快┅┅用力啊岳网站 | 亚洲人午夜精品射精日韩| 国产女人喷潮视频免费| 无码成人精品区在线观看| 亚洲中文字幕av天堂| 亚洲一区二区精品另类| 中文字幕一区二区三区精彩视频| 国产狂喷潮在线观看| 蜜臀av一区二区三区在线| 2020年最新国产精品正在播放| 欧日韩无套内射变态| 亚洲中文字幕无码日韩精品| 亚洲精品一区二区妖精| 日韩精品一区二区三区视频| 国产毛片精品一区二区色| 国产重口老太和小伙| 国产无人区码一区二区| 久久综合老鸭窝色综合久久| 九九日本黄色精品视频| 蒙阴县| 亚洲色在线v中文字幕| 农村妇女野外一区二区视频 | 男女裸体影院高潮| 亚洲一区二区色情苍井空| 116美女极品a级毛片| 亚洲国产成人片在线观看无码| 欧美刺激性大交| 国精品无码一区二区三区在线看| 疯狂做受XXXX高潮国产| 龙门县| 免费视频欧美无人区码| 亚洲v欧美v国产v在线观看| 人妻少妇精品视频专区| 亚洲熟妇自偷自拍另亚洲| 在线中文字幕国产一区| 五大连池市| 伊人久久大香线蕉AV网|