【发布时间】:2017-07-20 13:42:57
【问题描述】:
鉴于 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';
}
(似乎有很多关于回流会损害性能的讨论。但我仍然不确定是否存在任何要求,或者它可能只是取决于浏览器。尤其是关于提交表单,无论它是否有任何需要做回流或渲染。)
【问题讨论】:
-
您能否在您的问题中添加一个清晰的问题陈述?目前这里有几个问题,似乎相当开放,并且可能会吸引固执己见的答案。
-
请注意,表单提交与 settimeout 一样是同步的。您的意思是像一个永无止境的 while 循环那样阻塞代码还是实际上在等待来自服务器的响应?
-
@slebetman 不,只是非常简单的 javascript 添加元素,例如将 2 个
textarea元素添加到表单中。点击提交按钮可以只提交其中一个textarea吗?
标签: javascript html browser rendering reflow