【发布时间】:2018-02-16 20:26:17
【问题描述】:
我在这里阅读了很多关于如何拦截窗口关闭和弹出对话框的示例。我需要一些不同的东西。在我的页面关闭或更改之前,我需要调用并完成一个函数。
我更新了下面的代码,以帮助更好地解释我的问题。
window.addEventListener("beforeunload", function(event) {
//I need the done callback function to fire before the page is changed
//I've placed return null in that call because I think I need to pass something back?
visualize({
auth: {
name: "piper",
password: "password",
}
}, function(v) {
//destroy session
v.logout().done(function() {
console.log("JRS Logout");
return null;
});
});
});
【问题讨论】:
-
向我们展示您尝试在 onbeforeunload 事件中调用它的位置,并准确描述您不理解的情况。
-
是否有“window.onbeforeunload = jrsLogout;”的原因不行吗?
-
onbeforeunload不能包含异步代码 -
@PatrickRoberts 我认为这就是我的问题。
-
如果
v.logout()同步启动一个注销请求,当它完成时你将无法做任何事情,因为页面已经卸载,但是任何同步发送的XHR请求仍然应该去通过并被服务器接收。所以你需要做的是visualize(..., function (v) { ... })和inside回调,注册调用v.logout()的beforeunload处理程序。
标签: javascript logout onbeforeunload visualize