我在代码库中遇到了一些对我来说很危险的javascript代码。
function SaveAndClose()
{
//etc etc some validation
TheForm.submit();
window.close();
}
也许我误解了表单提交时间的工作原理。我希望有人可以启发我: 1)表单提交何时发生? 2)关闭如何影响表单提交?这里是否存在竞争条件?
我最初期望关闭不会执行(执行将在提交时终止),但我看到的行为是提交和关闭正在执行(在FF中) - 数据被持久化到数据库(通过表格的帖子动作的页面,窗口确实被关闭。
答案 0 :(得分:3)
submit()
是异步调用
它在后台启动HTTP请求,然后继续在页面上运行代码。
我不知道关闭浏览器窗口是否会中止HTTP请求
但是,如果这是在弹出窗口中,表单可能会提交到父窗口(使用target
属性),所以没关系。