在使用 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% 确定,但我认为 alert
和 confirm
函数冻结 DOM 因此在用户交互之前不会发生任何事情。
IMO,你应该改变你的应用程序的设计。
我需要你的帮助,
好像我关闭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% 确定,但我认为 alert
和 confirm
函数冻结 DOM 因此在用户交互之前不会发生任何事情。
IMO,你应该改变你的应用程序的设计。