关闭刷新页面签退逻辑实现

149 阅读1分钟

关闭刷新页面时触发事件,弹出是否离开此网站确认框,点击确定后退出登录。

mounted(){
    this.initGlobalEvent();
},
beforeDestroy(){
    this.removeGlobalEvent();
},
methods: {
    initGlobalEvent() {
        window.addEventListener('beforeunload', this.beforeunloadHandler);
        window.addEventListener('unload', this.unloadHandler);
    },
    removeGloabalEvent() {
        window.removeEventListener('beforeunload', this.beforeunloadHandler);
        window.removeEventListener('unload', this.unloadHandler);
    },
    beforeunloadHandler(e) {
        if(!window.noPopBeforeUnload){
            e = window.event || e;
            e.returnValue = '确认关闭?';
            return '';
        }
    },
    unloadHandler() {
        if(!window.noPopBeforeUnload){
            const logoutUrl = 'https://www.abc.com/logout';
            if(navigator.sendBeacon){
                navigator.sendBeacon(logoutUrl, null);
            }else{
                window.open(logoutUrl);
                window.opener = null;
                window.open('', '_self');
                window.close();
            }
            this.removeGlobalEvent();
        }
    }
}