表单提交时间安排是如何工作的

How does form.submit timing work?

本文关键字:工作 何工作 时间 表单提交      更新时间:2023-09-26

我在我们的代码库中遇到了一些javascript代码,这些代码对我来说非常危险

function SaveAndClose()
{
  //etc etc some validation
  TheForm.submit();
  window.close();
}

也许我误解了表格提交时间的安排。我希望有人能启发我:1) 什么时候提交表格
2) 关闭对表单提交有何影响?这里有可能存在种族状况吗?

我最初预计关闭不会执行(执行将在提交时终止),但我看到的行为是提交和关闭都在执行(在FF中)——数据被持久化到DB(通过表单的后操作页面),窗口确实被关闭了。

submit()是一个异步调用
它在后台启动一个HTTP请求,然后继续在页面上运行代码。

我不知道关闭浏览器窗口是否会中止HTTP请求
但是,如果这是在一个弹出窗口中,那么表单很可能正在提交给父窗口(使用target属性),所以这无关紧要。