【问题标题】:Vue. Prevent window close depending on vuex stateVue。根据 vuex 状态防止窗口关闭
【发布时间】:2020-04-14 20:25:49
【问题描述】:

所以我想阻止我的 Vue 应用程序在 Vuex 状态中有某个值时关闭浏览器窗口。我认为我遇到的问题是 Vuex 商店在生命周期挂钩中不可用。

这是我正在尝试的:

mounted: function () {
        window.addEventListener('beforeunload', function (event) {
            console.log('unload');
            if (this.$store.state.curOrder != ''){
                event.preventDefault()    
                event.returnValue = ""
            }
        }, false)
    },

当我尝试关闭浏览器窗口时,控制台日志是正确的,但随后出现此错误:

Uncaught TypeError: Cannot read property 'state' of undefined

有什么解决方法可以让我在关闭浏览器之前访问 Vuex?

【问题讨论】:

    标签: javascript vue.js vuex


    【解决方案1】:

    可能是范围问题,试试这样。

    创建一个单独的方法。

    methods: {
        onClose(event) {
            console.log('unload');
            if (this.$store.state.curOrder != ''){
                event.preventDefault()    
                event.returnValue = ""
            }
        }
    }
    

    对于您的听众,更改为:

    window.addEventListener('beforeunload', this.onClose);

    【讨论】:

    • 不错!这样我就可以阅读商店。但是,它不会阻止窗口关闭。我正在使用 Chrome 版本 79
    • 防止窗口关闭是非常糟糕的做法。如果发现 Chrome 不允许该功能,我不会感到惊讶。
    • 嗯是真的.. 可惜这是一个供内部使用的应用程序,用户总是让文档被屏蔽。将尝试寻找替代方案,例如在关闭之前保存文档或类似的东西。谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多