【发布时间】:2016-10-29 16:09:07
【问题描述】:
在这个编码示例中,函数logout() 不会执行所有它的异步调用,也不会等到它们完成——而是在之前卸载页面,因为beforeunload 事件的返回触发了页面卸载。
$(window).on('beforeunload', function(event) {
event.preventDefault();
logout();
return;
});
我想尝试的是事件函数在logout()中的几个异步调用完成后返回。
编辑:我的目标是不显示警报!我只想在页面卸载之前执行一些代码。注销功能可能包含需要完成的 ajax 请求和 jQuery 动画。
我尝试了回调,但最终得到了这个结果,因为它返回的是回调,而不是事件函数,所以不是想要的结果。
$(window).on('beforeunload', function(event) {
event.preventDefault();
logout(function(x) { return; });
});
【问题讨论】:
-
@E.Mourits 不,你读过我的问题吗?它与离开和导航的区别无关,而是在页面卸载/新页面加载之前执行代码。
-
据我所知,您无法阻止用户离开您的页面。可能的重复是我认为最接近您想要的答案。
-
@E.Mourits:我可以。 beforeunload 函数在之前执行。如果其中有一段时间(真),则用户不能离开。我看不出您的参考与我的问题有关。
-
好吧..你可以,但你真的不应该。当他/她试图离开时,你为什么要让他/她离开?向您的页面添加注销按钮也可以。
标签: javascript jquery asynchronous google-chrome-extension jquery-events