簡體   English   中英

通過Javascript向DOM中添加大量HTML時,IE太慢

[英]IE too slow when adding a lot of HTML to the DOM via Javascript

我有一個頁面,我們在其中使用Kendo UI模板生成一堆HTML,以插入到DOM中。 我們正在談論2+百萬字節。 所有其他瀏覽器將在大約2到3秒左右的時間內顯示此內容。 我已經在避免使用jQuery,並通過document.getByElementId調用設置了innerHTML。 看來,最慢的部分是IE進行的regexp.test調用。 IE是否證明所有開始/結束標記都匹配? 如果是這樣,是否有辦法告訴IE跳過此檢查以加快處理速度(即“信任我”)? 我已經將所需的HTML減小到盡可能的小,因此實際上不再是一種選擇。 另外,我顯示的數據甚至還不是最大的數據集,所以我知道它會變得更大。 有人有什么想法嗎?

更新:

這是我正在使用的當前代碼:

 var resultHtml = kendo.template(templateHtml, { useWithBlock: false })(currentPage.ViewModel);
 resultHtml = resultHtml.replace(new RegExp("\>[\n\t ]+\<", "g"), "><"); // Get rid of whitespace
 document.getElementById("tblData").innerHTML = resultHtml;

在IE中,這大約需要10秒鍾才能顯示出250萬個字符。 在Chrome / FireFox / Opera中,這大約需要2到3秒鍾。

實現類似“雙重緩沖”的功能。

創建一個不屬於DOM的節點。

var offlineNode = $('<div />');

將您的內容呈現到脫機節點。

offline.html(kendoTemplate(billionData));    

完成后,將整個節點移至DOM。

offlineNode.appendTo($('#a-place-in-dom'));

IE在猜測何時重新呈現頁面時遇到問題,因此對DOM操作很明智。 每次您進行大量DOM更改時,IE都會變慢。

問題似乎不是HTML現在添加到DOM中。 它與我必須用Kendo MVVM 2路綁定的所有對象有關。 對於那個很抱歉!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM