很慢尝试使用YUI的自动完成功能,我们遇到了一个事实,即它是非常慢上IE6含30000项的数据源在尝试键入时(自动填充字段,IE需要几分钟才能响应)。自动完成在YUI在IE6上的大数据集
但是,相同的确切代码在IE8中几乎可以实时运行。
我们做错了什么?我们可以以某种方式优化它吗? IE6 + YUI自动完成不是为这种大型数据集设计的吗?
这里是我们的代码初始化autocompleter:
Y.namespace('YAHOO.program');
Y.program.AllTreeItemsArr = new Array();
// Populate the array with 30000 elements
Y.program.BasicLocal = function() {
var oDS = new YU.LocalDataSource(Y.program.AllTreeItemsArr);
oDS.responseSchema = {fields : ["portfolio"]};
var oAC = new Y.widget.AutoComplete("selected"
, "autocomplete_container", oDS);
oAC.prehighlightClassName = "yui-ac-prehighlight";
oAC.useShadow = true;
oAC.typeAhead = true;
oAC.queryDelay = .05;
oAC.typeAheadDelay = .5;
return {
oDS: oDS,
oAC: oAC
};
}();
而这里的HTML使用它:
<span id="port_autocomplete" class="yui-skin-sam" style='position: relative;'>
<input type='text' id='selected' maxlength=10 name='selected'
value='' isSelected=1 onkeyup="searchOnEnter();">
<div id="autocomplete_container" style="position: absolute"></div>
</span>
的searchOnEnter
功能是一个标准的“抓按键和执行搜索JS功能,如果键== 13“。
这是很难没有一些探查数据说。尝试使用Dynatrace(它支持IE6,我认为)分析您的应用程序http://ajax.dynatrace.com/pages/与更小的数据子集并查看运行缓慢。 – 2010-02-26 20:59:41
这里的问题在哪里?当然IE6很慢,加上你为什么用这么大的数据集来初始化它? – ChaosPandion 2010-02-27 01:10:32
@Chaos:问题出现在帖子的中间:“我们做错了什么?我们可以通过某种方式进行优化吗?IE6 + YUI自动完成不是为这样的大型数据集设计的吗?” – DVK 2010-02-27 04:37:46