我需要先运行一段代码,然后用户才能离开或刷新页面。离开工作正常,但刷新的行为完全不同,并且不会触发我的路由后卫,因此我尝试在@HostListener("window:beforeunload", ["$event"])
上进行。
在unload
上运行代码似乎不起作用,我必须这样做beforeunload
。
但是问题是chrome允许用户取消刷新,然后在我已经调用我的代码后停留。然后我的用户有一个东西,我已经告诉后端他们已经没有了。
我还没有找到任何证据表明有一种方法可以从此弹出窗口取回值,以了解用户是否确实尝试过留下。
相反,我一直试图尝试阻止此弹出窗口,这也使我陷入困境。我已经尝试了在此找到的所有解决方案,但似乎没有一个解决之道。我想念什么?
@HostListener("window:beforeunload", ["$event"])
beforeUnloadHander(event) {
this.codeINeedToRun();
//failed attempts to prevent popup =>
event.preventDefault();
event.returnValue = null;
window.onbeforeunload = function () {
return null;
};
event.stopPropagation();
}