Я думаю, что это может работать так:

сь определить, почему страница загружалась 20 с, я обнаружил странное поведение в IE8.

Сценарий такой.

Я делаю Ajax-вызов, он возвращается, и обратный вызов выглядел примерно так

$("#StoreDetailsContainer").html($(tableHtml));
var StoreDetailsTable = $("#StoreDetailsTable");
StoreDetailsTable.tablesorter({ sortList: [[0, 0]], cssChildRow: "SubTable" });
StoreDetailsTable.filtertable({ cssChildRow: "SubTable" });

Однако этот бит кода занял 20 секунд.

Я бездельничал, определял время и выявлял предупреждения между методами, и внезапно это заняло всего 6 секунд. Я немного поигрался, чтобы обнаружить, что если я введу задержку после.html() позвоните, и до того, как я попытался манипулировать DOM, страница выглядела НАМНОГО быстрее. Теперь это выглядит так

$("#StoreDetailsContainer").html($(tableHtml));
window.setTimeout(function() {
    var StoreDetailsTable = $("#StoreDetailsTable");
    StoreDetailsTable.tablesorter({ sortList: [[0, 0]], cssChildRow: "SubTable" });
    StoreDetailsTable.filtertable({ cssChildRow: "SubTable" });
}, 100);

Это также занимает всего 6 секунд, несмотря на то, что к процессу добавляются дополнительные 1/10 секунды.

Моя теория состоит в том, что, поскольку DOM не был полностью представлен на экране IE.html() вызов, прежде чем пытаться работать с ним, происходит какая-то блокировка.

Есть ли способ определить, когда IE закончил рендеринг того, что было добавлено в DOM.html() поэтому мне не нужно использовать произвольное значение вsetTimeout вызов?