浏览器是否显示HTML更改或允许在JavaScript仍在运行时提交表单


  • 鉴于JavaScript正在同步运行(无setTimeout)以添加或删除HTML元素,HTML更改是否应该在完全完成之前显示给用户?

  • 更重要的是,如果JavaScript正在更改可以包含在表单提交中的元素(例如,添加多个textarea元素),用户可以在进行进步时单击提交按钮并提交不完整的请求吗?(请求中包含一些textarea元素,而某些textarea元素则不包括。)


这样的东西: <form action="" method="post"><input type="submit" value="Submit"></form>

用户提交时,某些功能恰好正在进行中。

function happens_to_be_running_and_user_clicks_submit(){
    the_form_element.insertBefore(document.createElement('textarea'),the_form_element.firstChild).value='first textarea value';
    the_form_element.insertBefore(document.createElement('textarea'),the_form_element.firstChild).value='second textarea value';
}

(似乎有很多关于反流损害性能的讨论。但是我仍然不确定是否存在任何要求,或者也许仅取决于浏览器。尤其是关于提交表单,无论它是否有任何东西使用反流或渲染。)

我认为您的混乱可以通过如何命名示例函数happens_to_be_running_and_user_clicks_submit来解释。我认为您希望当用户单击按钮时,功能可以运行。

这是不可能的。至少不是不使用网络工人。即使到那时,网络工作者也无法更改DOM,因此,当Web Worker将消息发送回主线程以更改DOM时,它将再次变得不可能。

JavaScript是单线线。因此,一次只能发生一件事。当用户执行任何操作时(移动窗口,单击按钮,移动鼠标。)操作系统将将该事件发送到应用程序的事件队列。JavaScript(或更确切地说,浏览器)读取此队列以处理事件。但是由于它是单线线程,它仅在不忙时处理事件。

所以。这只给我们留下了两种可能性。

  1. 您的功能在用户单击按钮之前立即执行。然后,当用户单击按钮时,功能所做的一切都将呈现和活动。

  2. 用户单击按钮后,您的功能立即执行。然后,当用户单击按钮时,功能都不会活动。

没有3'rd状态。这是全部或一无所有。至少不是没有诸如 setTimeout或ajax的异步。

相关内容

  • 没有找到相关文章

最新更新