vue项目使用js监听浏览器关闭、刷新、后退事件

这篇具有很好参考价值的文章主要介绍了vue项目使用js监听浏览器关闭、刷新、后退事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、业务场景:

在项目的某些页面中,在执行某些接口调用过程的时候,如果用户选择刷新、关闭或者后退浏览器。有可能会造成接口被阻断,所以可能你会需要js监听浏览器关闭、刷新、后退事件,在进行这些操作的时候给个提示。如下图:
vue监听浏览器关闭事件,js,javascript,vue.js
vue监听浏览器关闭事件,js,javascript,vue.js

二、实现方式

1、监听浏览器关闭、刷新,给出提示

methods: {
       handleBeforeUnload(event) {
            // 兼容火狐的做法
            event.preventDefault()
            event.returnValue = ''
            // 展示提示消息 
            // (这里其实修改默认提示语是不生效的,不过我的业务场景不需要修改默认提示语
            // 我也没找到能修改的方法,有大佬知道的话麻烦告知)
            const message = '确定要离开吗?'
            event.returnValue = message
            return message
        }
},
 mounted() {
        window.addEventListener('beforeunload', this.handleBeforeUnload)
        window.addEventListener('unload', this.handleBeforeUnload)
    },
    destroyed() {
        window.removeEventListener('beforeunload', this.handleBeforeUnload)
        window.removeEventListener('unload', this.handleBeforeUnload)
    },

2、监听浏览器后退,给出提示

methods:{
      onPopState(e) {
                // 监听到浏览器回退事件(这里提示用的confirm,是可以自定义的)
                if (confirm('离开当前页面数据可能会丢失,您确定离开当前页面吗?')) {
                    // 点击确定回退
                    window.removeEventListener('popstate', this.onPopState)
                    window.history.go(-1)
                } else {
                    // 点击取消不回退
                    window.history.pushState(null, null, window.location.href)
                }
        },
      },
     mounted() {
	        // 添加 popstate 事件监听
	        window.history.pushState(null, null, window.location.href);
	        window.addEventListener('popstate', this.onPopState);
       },
    beforeDestroy() {
        // 在组件销毁前,移除 popstate 事件监听
        window.removeEventListener('popstate', this.onPopState)
    }

end~文章来源地址https://www.toymoban.com/news/detail-564492.html

到了这里,关于vue项目使用js监听浏览器关闭、刷新、后退事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue.js中如何使用Vue Router处理浏览器返回键的功能

    在Vue.js中,Vue Router默认提供了处理浏览器返回键的功能。当用户点击浏览器的返回键时,Vue Router会自动导航到历史记录中的上一个路由。然而,如果你想自定义返回键的行为或者在特定的页面上进行特殊处理,你可以使用Vue Router的导航守卫(Navigation Guards)和Vue的生命周期

    2024年04月10日
    浏览(30)
  • 使用JavaScript关闭浏览器窗口的几种方法

    在Web开发中,有时候我们需要通过JavaScript来控制用户的浏览器行为,其中之一就是关闭浏览器窗口。本文将介绍几种使用JavaScript关闭浏览器窗口的方法,并提供相应的源代码示例。 使用window.close方法关闭窗口 要关闭当前窗口,可以使用window.close方法。这个方法会关闭当前浏

    2024年02月04日
    浏览(41)
  • 使用selenium打开浏览器自动关闭及报错问题

    目录 1.问题 2.解决方案 3.安装后可能出现浏览器报错 \\\'msedgedriver\\\' executable needs to be in PATH 4.此时浏览器正常打开并不会出现闪退问题 安装python后,在运行Selenium的时候遇到一个问题,执行完程序,浏览器自动关闭了,我在程序中也没有写driver.quit()方法。代码如下: 当前seleni

    2024年02月17日
    浏览(31)
  • 谷歌浏览器调试vue项目

    前言          众所周知,在项目过程中我们常常遇到的一个问题就是本地调试的时候没问题但是发布到线上的时候就不行了。在时间充裕的情况下,我们当然可以慢慢调试,但是那是不可能的。在线上遇到问题时,难免会倍感压力和焦虑,这个时候就有必要强化前端的调试能力了

    2024年02月03日
    浏览(34)
  • 使用puppeteer完成监听浏览器下载文件并保存到自己本地或服务器上完成上传功能

    获取网站点击的下载pdf,并把pdf重命名再上传到COS云上面 “puppeteer”: “^19.7.2”, “egg”: “^3.15.0”, // 服务期用egg搭的 文件服务使用COS腾讯云 获取浏览器下载事件,并把文件保存到本地 在保存到本地前监听此文件夹,如果有文件则获取并上传 加timer做防抖是为了防止在文

    2024年04月15日
    浏览(29)
  • webpack项目和vue项目发布,浏览器存在缓存

    项目打包的js(css也是一致)名称都采用哈希值 问题:哈希值在有些情况下打包会不变,导致浏览器使用自己缓存的资源 解决:每次打包出来增加时间戳每次打包后的js名称都不一致 1.js处理 每个项目的打包逻辑都不一样,根据package.json中的打包指令找到执行的文件修改 st

    2024年02月16日
    浏览(31)
  • vue项目 设置浏览器地址栏图标及名称

    1.1将需要展示的 ico 放到项目文件中 1.2在项目根目录public文件中的 index.html 添加如下代码 项目根目录下 没有 public文件夹 时, 我们来看vue项目的目录结构,根目录下有一个 index.html ,这个就相当于我们普通项目中的各个html页面文件,所以设置方法就是在 index.html 的 head标签

    2024年04月13日
    浏览(66)
  • vue项目发版后清理浏览器缓存代码

    1、在index.html中添加代码 2、在main.js中清理本地缓存 3、使用  webpack  插件来实现自动添加版本号

    2024年02月03日
    浏览(40)
  • 如何在VSCode内嵌浏览器实时预览Vue项目

    安装以下两个插件:just heml preview 和 Browser Preview just heml preview:使用ctrl + shift + p 打开命令 然后输入:just preview 即可打开 输入本地项目地址:localhost:4000 最后可按照vscode正常分屏方式分屏(右上角有pc端和移动端) Browser Preview:现已不再维护 安装成功后左边会出现一个类似

    2024年01月22日
    浏览(53)
  • 每天bug---1、el-table 行加样式类名(row-class-name)生效了,但是效果检测不到;2、解决VUE项目在微信浏览器中使用支付宝支付提示复制链接到浏览器打开

    一、el-table 行加样式类名(row-class-name)生效了,但是效果检测不到 1、问题 2、解决 关闭浏览器,重启程序 二、解决VUE项目在微信浏览器中使用支付宝支付提示复制链接到浏览器打开 1、问题:在微信浏览器中访问支付宝支付接口 分析及解决:访问支付宝接口会返回一个f

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包