автозаполнение в YUI очень медленно в IE6 для большого набора данных - PullRequest
0 голосов
/ 26 февраля 2010

Пытаясь использовать функцию автозаполнения YUI, мы столкнулись с тем, что крайне медленно при IE6 для источника данных, содержащего 30000 элементов (при попытке ввести поле автозаполнения для ответа IE требуется несколько МИНУТ).

Однако тот же самый точный код работает в реальном времени в IE8.

Мы что-то делаем не так? Можем ли мы как-то оптимизировать это? Разве IE6 + YUI autocomplete не предназначен для таких больших наборов данных?

Вот наш код инициализации автозаполнения:

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, если key == 13».

1 Ответ

1 голос
/ 27 февраля 2010

Очевидный ответ заключается в том, что IE имеет медленный движок JS, а 30000 записей - это много данных. Однако операция фильтрации включает в себя один вызов, который может быть причиной вашей проблемы. Попробуйте этот патч и посмотрите, имеет ли он значение:

http://gist.github.com/316358

...