2013-03-20 66 views
1

導致停止腳本錯誤在我們的應用程序,我們有一個樹(使用Ext.tree.Panel創建),並有其擁有大約2500追加元素到EXTJS樹在IE

子節點的一些節點

當我們嘗試將數據加載到樹中時,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 
    }); 

} 

};

有關如何解決此問題的任何建議?

回答

0

ExtJS Tree默認情況下是一個非常沉重的組件。對於您給出的代碼,每次添加節點時,它都會執行完整的佈局計算。如果你還沒有關閉動畫,計算會發生幾次。 樹的兩種性能改進方法。

  • 暫停佈局,然後開始添加節點並在添加完所有節點後恢復它。請參閱Ext文檔中的Ext.suspendLayouts方法。
  • 強制關閉動畫animate:false;這將會對用戶體驗產生輕微的影響,因此您甚至可以考慮使用Ext.isIE方法將其設置爲可選項