Я борюсь с нелепой проблемой в IE6. Я визуализирую страницу, полную данных на стороне сервера, а затем перебираю результаты (строки таблицы HTML) на стороне клиента, обновляя каждую строку последовательно с результатами вызова AJAX для каждой строки. (Я не хочу использовать .each (), не спрашивай ...)
IE6 не будет показывать что-либо на стороне клиента, пока весь код в блоке document.ready () не завершится. В приведенном ниже коде вы увидите, что это воспроизводимо без вызовов AJAX db: возьмите таблицу из 100 строк, а когда документ будет готов, переберите коллекцию TR и замените текстовый узел в каждом TD. IE6 не покажет ничего, пока не завершится выполнение кода jQuery.
Вот контрольный пример:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<head>
<script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready( function() {
var totalRows = $('table tr').size();
for (var i=0; i<totalRows; i++) {
var currentRow=$('table tr').eq(i);
var cellTarget = currentRow.children(0);
cellTarget.html('and after');
}
});
</script>
</head>
<body>
<table>
<tr><td>before</td></tr>
<tr><td>before</td></tr>
<tr><td>before</td></tr>
... repeat 97 more times ...
</table>
</body>
</html>
Вот сумасшедшая часть: положить
оповещение («привет»);
после обновления текстового узла TD и когда появляется окно модального оповещения, вы можете наблюдать за обновленной таблицей, которая обновляется, когда она проходит по строке. Я пытался использовать различные функции сна после обновления текстового узла, но безрезультатно - похоже, что это не имеет никакого эффекта, кроме замедления общего времени выполнения. Я пытался переместить блоки скриптов в конец файла, но это, похоже, тоже не решает проблему.
Есть идеи?