0

因此,我使用的是 2.6.11 版本,并且在用户退出我的应用程序或重新加载页面之前执行操作时遇到了一些困难。

我正在将 CRM 与电话集成。当用户访问我的应用程序时,他需要登录(不是在我的应用程序中,而是在我使用 SignalR 访问的集线器中),因此我可以执行一些操作,例如拨打电话、接听电话和处理我的事件从集线器接收。问题是:如果用户重新加载页面或退出页面,我需要将他从集线器连接中注销。

使用角度时,解决方案非常简单,我只需要调用:

$scope.$on('$destroy', function () {
    // Log user out here
});

...但我不能用 vue 做到这一点。我一直在尝试使用beforeDestroykeep-alivedestroyed和其他方法,但它们都没有帮助我实现目标。我尝试了纯javascript,例如:

window.onbeforeunload = () => { 
    // Log user out here
}

...但由于某种原因,即使这也没有帮助我解决问题。

我真的不知道这是否是我的错误,或者这是否还没有在 vue 上实现,但我在互联网上没有发现类似的问题。框架内是否有任何解决方案,或者我可以使用 javascript 在用户退出或重新加载页面之前执行操作吗?

4

1 回答 1

0

为我的问题找到了解决方案。我把onbeforeunload事件放在错误的地方。而且,就我而言,这onbeforeunload不是答案。要注销我只需要调用的用户:

import { EventBus } from "@/services/eventBus"

window.onunload = function () {
    EventBus.$emit("onunload")
}

……在main.js。然后,我能够监听这个事件并调用.vue文件中的一个函数:

mounted() {
    EventBus.$on("onunload", this.logout);
},
于 2020-02-20T20:14:13.653 回答