【问题标题】:Is js executed after form synchronized submit表单同步提交后是否执行js
【发布时间】:2012-08-14 01:47:44
【问题描述】:

我的代码如下:

form.submit();//synchronized submit, not asynchronous,the form is not a html form but created by javascript
some codes here;//Is this line executed, or it sometimes executed sometimes not

我在第 2 行有一些统计代码(向服务器发送 http 请求)并真正获得了一些数据。因为统计数据和预期有很大差距,我怀疑第二行总是被执行。

【问题讨论】:

    标签: javascript forms submit


    【解决方案1】:

    这取决于表单在提交时的作用:

    • 如果表单提交正常,那么代码可以运行。普通表单提交会将浏览器重定向到 action 属性中定义的 url。代码可能会运行,但页面已经准备好离开,因此您可能看不到 form.submit() 之后的代码做了什么。

    • 如果表单提交并被 JavaScript(可能被事件处理程序)捕获,那么 form.submit() 之后的代码可以运行,但取决于事件处理程序的作用。如果处理程序没有阻止正常的表单提交,则情况与第一种相同。如果处理程序阻止正常的表单提交,那么它可以运行。

    我建议您为该表单构建一个处理程序,以使用 return false 和/或 event.preventDefault() 等技术阻止正常的表单提交,并同时运行其中的代码。

    【讨论】:

    • 基本上就是这个。如果您单击链接或提交表单,它将触发与该事件相关的任何事件,然后它将开始重定向浏览器。一旦浏览器开始重定向,任何打开的连接(异步连接,或尚未下载的图像之类的东西)都会被取消——即使服务器需要一段时间才能返回下一页——代码之后,如果它有 any image/script/link/etc 调用来发送数据,通常会在“onunload()”上被取消。因此,如果您依赖异步/外部数据,诀窍是推迟 form.submit()
    • 感谢您的回复,但我仍然不确定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多