在使用 window.onbeforeunload 关闭 window 之前等待功能完成

Waiting for function to finish before closing the window using window.onbeforeunload

我需要你的帮助,

好像我关闭window(IE 11)的时候,弹出确认框,点击确定按钮,功能要运行,但是window 在函数有机会完成之前关闭(将记录保存到数据库)。如何修改代码,使函数 imts_save_changes() 有机会在关闭 window?

之前完成其数据库操作

这是标记:

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">

</style>

<script type="text/javascript">

window.onbeforeunload = function() { return test() }

function test() {

    if (confirm("would you like to run the last function before closing the window?")) {

         imts_save_changes()

         alert("record saved")

    }
}

</script>

</head>

<body></body>

</html>

有问题的代码:

window.onbeforeunload = function() { return test() }

function test() {

    if (confirm("would you like to run the last function before closing the window?")) {

         imts_save_changes()

         alert("record saved")

    }
}

当您 confirm 关闭由 onbeforeunload 事件触发的 window 时,它会立即关闭;您不能取消后续操作(真正的关闭)。在这种情况下,您所能做的就是警告用户有关未保存的更改,并给他机会不确认操作。

我不是 100% 确定,但我认为 alertconfirm 函数冻结 DOM 因此在用户交互之前不会发生任何事情。

IMO,你应该改变你的应用程序的设计。