在使用window.onbeforeunload

时间:2016-08-16 16:10:13

标签: javascript internet-explorer hta

我需要你的帮助,

似乎当我关闭窗口(IE 11)时,弹出确认框,然后单击确定按钮,该功能想要运行,但是在功能有机会完成之前窗口关闭(保存记录到数据库)。如何修改代码,使得函数imts_save_changes()在关闭窗口之前有机会完成其数据库操作?

这是标记:

<!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")

    }
}

1 个答案:

答案 0 :(得分:2)

confirm关闭onbeforeunload事件触发的窗口时,会立即关闭;你不能取消后续行动(实际结束)。您所能做的就是警告用户,在这种情况下是关于未保存的更改并给他机会不确认操作。

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

IMO,您应该更改应用的设计。