如果浏览器不在DOM中,浏览器如何知道要呈现的内容?

时间:2015-12-10 09:58:47

标签: javascript dom extjs

我想将ExtJS生成的表单复制到另一个窗口(用于打印),并保留表单值。相同的程序已经适用于网格。但是当尝试将表单的DOM树复制到另一个窗口时,表单值将丢失(保留其他所有内容,只丢失字段中的值)。

所以现在我想弄清楚浏览器如何知道要在哪个字段中呈现哪个值,因为该值不会显示在标记中。

也许我变老了,但是当我开始开发时,输入字段的每个值都存储在DOM中,如下所示:

<input type="text" value="VALUE">

我已经将整个页面的DOM从浏览器控制台复制到文本编辑器中并搜索了表单值,但是它们不在那里,所以我100%肯定在formpanel之外的某处没有任何隐藏,这与正确对齐绝对定位的位置或任何东西。

那么,如果浏览器不在DOM中,浏览器如何知道要呈现什么?

1 个答案:

答案 0 :(得分:0)

对您的问题的简短回答 - 存储在ExtJS组件(JS对象)和DOM的JS代码中的所有数据只是在需要时更新的图形表示。

例如,form(component)是一个包含所有必要信息的对象,包括不是组件基础的DOM,而只是一个图形表示。输入数据时,我们更改组件,然后在必要时更改其图形表示。因此,如果我在this fiddle中创建简单表单并设置表单项value: 'myName',则在此DOM中我可以找到value的{​​{1}}属性

input

但如果我用

更改其值
<input id="textfield-1010-inputEl" data-ref="inputEl" type="text" size="1" name="name" value="myName" role="textbox" aria-hidden="false" aria-disabled="false" aria-readonly="false" aria-invalid="false" aria-required="false" class="x-form-field x-form-text x-form-text-default " autocomplete="off" data-componentid="textfield-1010">
myFormPanel.down('[name=name]').setValue(Math.random()); 的{​​{1}}属性不会更新,表单项组件也会更新。

P.S。如果您想确切地知道浏览器如何呈现页面内容,那么它的问题是关于浏览器引擎以及它们如何与JS,HTML等一起使用,您必须阅读文章like this