【发布时间】:2014-09-14 19:39:44
【问题描述】:
在将大量数据加载到 DOM 方面时,我遇到了一个大问题。事实上,这里只有 IE11 是交易破坏者。这是一些示例代码,基本上我是这样做的:
var concat = [];
for (var i = 0; i < 10000; i++) {
concat[i] = "<li value='"+'XYZ' + i+"'>"+'XYZ ' + i+"</li>";
}
var element = conc.join('');
$('ul.mylist').append(element);
现在,将其分解为一个非常基本的示例,其灵感来自我在类似主题中找到的 jsFiddle:
http://jsfiddle.net/bVAFF/152/
小提琴在 IE 中运行良好!
我插入大量列表元素,最多约 10.000 个。这表现很好,因为我将单个元素连接成一个大字符串,最后附加到 DOM。
至少它在 Chrome 和 Firefox 上表现出色,插入数据需要 1-2 秒,而 IE11 需要 MINUTES 才能从注入捕获中复活。我正在尝试更大的数据量:高达 9MB/70.000 个元素的字符串(!)仍然加载“meh”(但我当时没有在 IE 上测试这个)。
我不得不承认,我真正注入的字符串比(非常简单的)示例中的字符串大得多,但仍然:它在 Chrome 和 FF 上表现出色。只有IE冻结!
有人知道为什么会这样吗?
来自柏林的问候!
亚哈
【问题讨论】:
-
欢迎使用 Internet Explorer。
-
好吧,假设 IE 性能不是那么好,那么您不能创建这么多元素。确保用户不能一起阅读它们,因此您可以逐步构建页面。分页?无限滚动?由你决定......
-
您的问题似乎无法得到可靠的回答。至少,回答者必须非常熟悉 IE 的内部运作。我不知道社区中是否存在此类成员,如果存在,我不确定他们是否愿意在浏览器中公开记录性能问题。
-
您在小提琴中工作的过于简化的示例是否在您的其他环境中不起作用?还是简化它使问题消失了。
-
@sWW 当然,我不是 IE 粉丝,但实际上
.append()非常慢。如果删除它并通过innerHtml直接设置内部 HTML,则 IE 中的代码性能也会不错。 这里的问题不是浏览器而是代码...
标签: javascript jquery append internet-explorer-11