IE не обновляет отображение после того, как панель обратного вызова обновляет DOM - PullRequest
1 голос
/ 06 мая 2009

У меня есть панель обновления на странице ascx с использованием .Net 3.5.

Пользователь вводит данные, инициирует обратный вызов и ajax обновляет DOM.

Как правило, все нафиг дори. Время от времени DOM обновляется, и IE не утруждает себя обновлением дисплея. Вся обновленная область кажется пустой.

Как только пользователь делает что-то, что вызовет обновление, например, изменяет размер окна, данные мгновенно появляются на экране, но только после этого.

Почему это? Что может быть причиной этого? Как это можно исправить?

1 Ответ

2 голосов
/ 21 октября 2009

Вы можете «исправить» это, переключившись на настоящие браузеры:)

Действительно, вы могли бы быть в состоянии исправить это в соответствии с трюком, который я нашел на этой странице .

По сути, вам нужно создать пустой узел и удалить его локально после обновления DOM новым содержимым :

var t = document.createTextNode('temp text');
element.appendChild(t); // Not sure if this is any element
                        // or one inside your new DOM nodes.
setTimeout(function() { t.parentNode.removeChild(t); }, 0);

На этой странице автор говорит:

Даже с моим "исправлением" это работает только если пользователь перемещает курсор мыши окна и обратно.

Но я думаю, что это так же хорошо, как и получается ... Я думаю, что IE может не запускать обновление, если в окне браузера не выполняется какая-либо активность, чтобы сэкономить время обработки.

Это давно известная действительно раздражающая ошибка в IE, хотя я нигде не могу ее найти. На самом деле, даже у Opera есть такая ошибка время от времени.

Кроме того, даже если вы решите это с помощью этого трюка, убедитесь, что каждый отдельный фрагмент HTML действителен. Вы можете проверить это в http://validator.w3.org. Если какой-то фрагмент кода недействителен, то вы не можете обвинить браузер в том, что он не понял, что вы имели в виду.

...