Мы работаем над довольно сложной системой, использующей GXT. Хотя в FF все отлично работает, IE (особенно IE6) - это отдельная история (более 10 секунд, пока браузер отображает страницу).
Я понимаю, что одной из основных причин является манипулирование DOM, которое является катастрофой под IE6 (см. http://www.quirksmode.org/dom/innerhtml.html).
Считается, что это общая проблема интерфейсной среды Javascript (т.е. GWT), но простой код (см. Ниже), который выполняет те же функциональные доказательства в противном случае. На самом деле, под IE6 getSomeGWT () занимает 400 мс, а getSomeGXT () - 4 секунды. Это фактор x10, который сильно меняет пользовательский интерфейс !!!
private HorizontalPanel getSomeGWT() {
HorizontalPanel pointsLogoPanel = new HorizontalPanel();
for (int i=0; i<350; i++) {
HorizontalPanel innerContainer = new HorizontalPanel();
innerContainer.add(new Label("some GWT text"));
pointsLogoPanel.add(innerContainer);
}
return pointsLogoPanel;
}
private LayoutContainer getSomeGXT() {
LayoutContainer pointsLogoPanel = new LayoutContainer();
pointsLogoPanel.setLayoutOnChange(true);
for (int i=0; i<350; i++) {
LayoutContainer innerContainer = new LayoutContainer();
innerContainer.add(new Text("just some text"));
pointsLogoPanel.add(innerContainer);
}
return pointsLogoPanel;
}
Таким образом, чтобы решить / смягчить проблему, нужно -
а. Уменьшить количество манипуляций с DOM; или же
б. Замените их на innerHTML.
AFAIK, (a) это просто побочный эффект от использования GXT, а (b) возможно только с UiBinder, который еще не поддерживается GXT.
Есть идеи?
Заранее спасибо!