Комментарии 7
У нас использование TimeField приводило к зависанию не только Chrome, но и IE 9, 10. Причем в обоих браузерах возникала сильная утечка памяти. Код компонента не правили, так как давно намечался переход поддерживаемых систем на более новую версию Ext. Перенесли приложение на ExtJS 4 — зависание прекратилось.
+1
Наше веб-приложение так просто не перенести, потому пришлось создавать патч. В версиях 4+ этот компонент сильно изменился, но цикл и там находил. Вот кусок из Ext-picker-Time:
createStore: function() {
var me = this,
utilDate = Ext.Date,
times = [],
min = me.absMin,
max = me.absMax;
while(min <= max){
times.push({
disp: utilDate.dateFormat(min, me.format),
date: min
});
min = utilDate.add(min, 'mi', me.increment);
}
return new Ext.data.Store({
model: me.modelType,
autoDestroy: true,
data: times
});
}
+2
А-а-а-а! Ты сделал всю мою работу на сегодня!
+1
А как нашли компонент, который приводил к зависанию?
Я вот, можно сказать, почти случайно — хром сразу умирал почти, а вот FF предлагал запустить отладку, открывал свой отладчик, и ставил точку останова на одну из строк как раз в цикле, после чего почти сразу зависал. Вспомнил о Вашем посте, решил попробовать и все получилось.
Я вот, можно сказать, почти случайно — хром сразу умирал почти, а вот FF предлагал запустить отладку, открывал свой отладчик, и ставил точку останова на одну из строк как раз в цикле, после чего почти сразу зависал. Вспомнил о Вашем посте, решил попробовать и все получилось.
+1
Изначально мой коллега отлаживал код (исходник) «по кускам» (удалял, вставлял вывод в консоль), так он добрался до компонента. Я же через Chrome указал точку останова в «Event Listener Breakpoints» (я выбирал DOM Mutation), потом уже в коде, далее как обычно.
0
Забыл указать, что сам компонент отлаживал с помощью Ext.override (у нас приложение собирается, потому сложно подключать файл ext-all-debug.js).
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Решение проблемы со временем в ExtJS 3 (после patch'а KB2998527)