Extjs 使用Ext'提问;s update()而不是dom.innerHTML

Extjs 使用Ext'提问;s update()而不是dom.innerHTML,extjs,innerhtml,Extjs,Innerhtml,我有一个关于使用Extjs的update()方法与直接更新Ext元素dom的innerHTML的性能、可靠性和最佳实践方法的问题 考虑以下两种说法: Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!'; 及 我不需要eval()任何脚本,而且我确信update()会考虑任何浏览器的怪癖 此外,是否有人知道是否使用: Ext.fly('element-id').dom.innerHTML 与 d.getElementById('ele

我有一个关于使用Extjs的update()方法与直接更新Ext元素dom的innerHTML的性能、可靠性和最佳实践方法的问题

考虑以下两种说法:

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!';

我不需要
eval()
任何脚本,而且我确信
update()
会考虑任何浏览器的怪癖


此外,是否有人知道是否使用:

Ext.fly('element-id').dom.innerHTML

d.getElementById('element-id').innerHTML

浏览器和平台的兼容性很重要,如果两者基本相同,那么将
Ext.element.dom.innerHTML
全部删除以获得
update()
可能是我的最佳解决方案

提前感谢您的帮助


Brian

如果您不需要将脚本动态加载到更新的html中或在更新后处理回调,那么您概述的两种方法是等效的。
update()
中的大部分代码添加了脚本加载和回调功能。在内部,它只是设置innerHTML来进行内容替换


Ext.fly().dom
返回一个普通的dom节点,因此是的,就它指向的节点而言,它与
getElementById()
的结果是等价的。唯一需要理解的微妙之处是Ext.fly()和Ext.get()之间的区别。Ext.fly()返回节点包装器对象的共享实例(flyweight)。因此,如果任何其他代码调用Ext.fly(),包括内部Ext代码,则该实例稍后可能会指向幕后的另一个节点。因此,调用Ext.fly()的结果只应用于原子操作,而不应作为长寿命对象重用<另一方面,code>Ext.get().dom返回一个新的、唯一的对象实例,从这个意义上讲,它更像getElementById()。

我想您已经回答了自己的问题:“浏览器和平台兼容性很重要,如果两者基本相同,那么就完全放弃Ext.element.dom.innerHTML进行更新()可能是我最好的解决方案。”JS库旨在(部分)抽象浏览器差异;更新就是一个例子


@bmoeskau在上面写道,update()提供了您当前问题所不需要的附加功能。然而,更新是一个不错的选择。

所以,基本上说,除非我想处理回调或评估一些脚本,否则使用
update()
或多或少有些过火。我理解对了吗?我主要关心的是浏览器兼容性。那么在这些术语中,
update()
Ext.fly().dom
有什么优势吗?谢谢这没什么区别。这并不过分,完全一样。兼容性没有区别。
d.getElementById('element-id').innerHTML