尝试使用YUI的自动完成功能时,我们遇到这样一个事实:对于包含30000个项目的数据源, IE6 时非常缓慢(当尝试输入自动完成时)字段,IE需要几个MINUTES来响应)。
然而,相同的确切代码在IE8中几乎可以实时运行。
我们做错了吗?我们可以以某种方式优化它吗? IE6 + YUI自动完成是不是设计用于这么大的数据集?
这是我们的代码初始化自动完成程序:
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”。
答案 0 :(得分:1)
显而易见的答案是IE有一个缓慢的JS引擎,30000条记录是很多数据。但是,过滤操作确实包含一个可能是您麻烦的根源的呼叫。试试这个补丁,看看它是否有所作为: