【发布时间】:2013-09-25 21:50:10
【问题描述】:
我在文档的某处读到,大多数浏览器不会随着表单值的变化而更新 DOM,因为频繁的 DOM 操作需要大量的计算性能。相反,它们创建一个表单值缓存来注册表单操作,并且仅在提交表单时更新 DOM。
浏览器真的是这样工作的吗?是否有关于这种行为的大量文档?
【问题讨论】:
-
这很容易测试。你试过什么?
-
不确定我是否正确理解了您的问题。 DOM 元素有 properties 和 attributes。如果您更改 属性,例如
value=""然后更改 DOM。但是form元素的当前值存储在 propertyvalue中,这是当用户键入某些内容时更改的值,例如进入input字段。如果属性发生更改,则需要重新检查 css 规则,如果有些不再适用,或者有些现在将适用。 -
canon:检查 Chrome 的 DOM Inspector,似乎所有输入字段值都保持不变。然而,在 Firefox 的调试器中,当我在任何输入字段中输入任何内容时,一切似乎都会立即更新。
-
t.niese:这似乎是正确的,但在这种情况下,为什么 Firefox 的 DOM 检查器也会显示更新的属性?
-
@kdani 我需要检查一下,但是如果您在当前的 firefox 或 chrome 中打开 jsfiddle.net/4nPnz 并输入
bar或单击prop-change,颜色不会变为绿色。但是如果你点击attr-change,它会变成绿色,因为属性发生了变化。此外,如果您重新加载并键入例如test进入它,然后按attr-change你会看到它会变成绿色,但test仍然是当前值。
标签: javascript forms dom caching browser