将元素附加到EXTJS树会导致IE中出现停止脚本错误

时间:2013-03-20 06:41:21

标签: internet-explorer dom extjs internet-explorer-8 extjs4

在我们的应用程序中,我们有一棵树(使用Ext.tree.Panel创建),并且有一些节点的子节点大约为2500.

当我们尝试将数据加载到树中时,Internet Explorer显示弹出窗口“脚本导致Internet Explorer运行缓慢,停止运行脚本?”。

我们发现,如果子节点小于500,则IE不会出错。因此,我们尝试一次只加载400个子节点,并在点击页面上可用的按钮时保持加载。

不幸的是,IE仍在提供错误。我刚刚创建了使用jsfiddler尝试做的示例。以下是链接。

代码示例here

结果here

以下是代码。

function addNodes(){     var node = Ext.getCmp('sampleTree')。items.items [0] .node.childNodes [0];

for (var cnt = 0; cnt < 400; cnt++) {
    node.appendChild({
        "task": cnt + "Hello",
        duration: cnt,
        user: 'Tommy Maintz' + cnt,
        iconCls: 'task',
        leaf: true
    });

}

};

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

默认情况下,ExtJS Tree是一个非常重的组件。对于您提供的代码,每次添加节点时,它都会执行完整的布局计算。如果你没有关闭动画,计算会发生几次。 树的两种性能改进方法。

  • 在开始添加节点之前暂停布局,并在添加所有节点后恢复它。请参阅Ext docs中的Ext.suspendLayouts方法。
  • 强制关闭动画animate:false ;这将略微提升用户体验,因此您甚至可以考虑使用Ext.isIE 方法为IE设置此选项