如何利用VUE监听网页关闭并执行退出操作

 更新时间:2023年08月14日 10:34:55   作者:Gua_guagua  
这篇文章主要给大家介绍了关于如何利用VUE监听网页关闭并执行退出操作的相关资料,因为项目中需求,浏览器关闭时进行一些操作处理,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

最近在项目中遇到了一个需求,需要监听页面关闭,在页面关闭时弹出提示框,并在离开页面时触发退出操作。因为是用VUE进行开发的,所以先在mounted()中创建页面关闭的监听

window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
window.addEventListener("unload", (e) => this.unloadHandler(e));

第一个监听的是页面关闭之前,对应的方法可以写做

// 页面关闭之前,触发提示框
    beforeunloadHandler(e) {
      if (e) {
        e = e || window.event;
        console.log(e);
        if (e) {
          e.returnValue = "关闭提示";
        }
        return "关闭提示";
      }
    },

第二个监听的是页面关闭的时候,这里面可以调用退出登录的方法,但是记得要用同步调用的方法,axios默认的是异步调用的方法

// 页面关闭
    async unloadHandler(e) {
      // 退出登录
      await this.handleGoLog();
    },

最后记得在destroyed()中,注销监听

destroyed() {
    window.removeEventListener("beforeunload", (e) =>
      this.beforeunloadHandler(e)
    );
    window.removeEventListener("unload", (e) => this.unloadHandler(e));
  },

补充知识:vue实现关闭浏览器退出登录功能(区别关闭和刷新)

项目场景:

在实现单点登录时,发现关闭浏览器后,并不会自动退出登录

解决方案:在app.vue中书写如下代码

  data() {
    return {
      gap_time: 0,
      beforeUnload_time: 0,
    };
  },
  methods: {
    // 关闭窗口之前执行
    beforeunloadHandler() {
      this.beforeUnload_time = new Date().getTime();
    },
    unloadHandler() {
      this.gap_time = new Date().getTime() - this.beforeUnload_time;
      //判断是窗口关闭还是刷新 毫秒数判断 网上大部分写的是5
      if (this.gap_time <= 10) {
        logOut() // 退出登录接口 这里应当换为个人的登出方法
      } else {
      }
    },
  },
  destroyed() {
    // 移除监听
    window.removeEventListener("beforeunload", () => this.beforeunloadHandler());
    window.removeEventListener("unload", () => this.unloadHandler());
  },
  mounted() {
    // 监听浏览器关闭
    window.addEventListener("beforeunload", () => this.beforeunloadHandler());
    window.addEventListener("unload", () => this.unloadHandler());
  }

然后,再关闭浏览器后,就会自动调用我们的退出登录函数了。 

总结 

到此这篇关于如何利用VUE监听网页关闭并执行退出操作的文章就介绍到这了,更多相关VUE监听网页关闭并退出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue实现pdf文档在线预览功能

    vue实现pdf文档在线预览功能

    这篇文章主要为大家详细介绍了vue实现pdf文档在线预览功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • vue父组件传值子组件报错Avoid mutating a prop directly解决

    vue父组件传值子组件报错Avoid mutating a prop directly解决

    这篇文章主要为大家介绍了vue父组件传值子组件报错Avoid mutating a prop directly解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • vue 动态创建组件的两种方法

    vue 动态创建组件的两种方法

    这篇文章主要介绍了vue 动态创建组件的两种方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • vue3中ts语法使用element plus分页组件警告错误问题

    vue3中ts语法使用element plus分页组件警告错误问题

    这篇文章主要介绍了vue3中ts语法使用element plus分页组件警告错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Vue中如何对ElementUI的Dialog组件封装

    Vue中如何对ElementUI的Dialog组件封装

    这篇文章主要介绍了Vue中如何对ElementUI的Dialog组件封装问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 详解axios全局路由拦截的设置方法

    详解axios全局路由拦截的设置方法

    这篇文章主要介绍了axios全局路由拦截的设置方法,axios全局路由代码通常是在构建axios实例注入的,本文通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • vue项目拍照或上传图片并实现转化为base64格式

    vue项目拍照或上传图片并实现转化为base64格式

    这篇文章主要介绍了vue项目拍照或上传图片并实现转化为base64格式方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue实现前端展示后端实时日志带颜色示例详解

    vue实现前端展示后端实时日志带颜色示例详解

    这篇文章主要为大家介绍了vue实现前端展示后端实时日志带颜色示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • vue项目中使用AvueJs的详细教程

    vue项目中使用AvueJs的详细教程

    Avue.js是基于现有的element-ui库进行的二次封装,简化一些繁琐的操作,核心理念为数据驱动视图,主要的组件库针对table表格和form表单场景,这篇文章给大家介绍了vue项目中使用AvueJs的相关知识,感兴趣的朋友跟随小编一起看看吧
    2022-10-10
  • Vue2 的12种组件通讯

    Vue2 的12种组件通讯

    之前文章我们描述给过Vue3 的七通信使用,今天中五篇文章我们再来看看Vue2 的通信使用写法的相关资料,需要的朋友可以参考下面文章的具体内容
    2021-09-09

最新评论