У меня была такая же проблема с медленным движком jscript ie7. Я добавил всплывающее окно статуса для человека. Я обновляю окно статуса, поскольку JS продолжается частями. Псевдокод:
- Создайте контейнер состояния, используя вашу библиотеку favit js. Я предпочитаю YUI. Смотрите их контейнер API.
- Выполните загрузку данных. - сначала нужно разбить его на куски
- Обновить всплывающее окно статуса. (Увеличьте% выполненной загрузки, увеличьте линейный индикатор и т. Д.) Обратите внимание, что на этом этапе экран, вероятно, не изменится, поскольку поток JS все еще работает.
- Далее звоните
var t = setTimeout("next_step(2)", 0);
// Where arg of 2 would mean do the second step
// This will yield to the browser, and the display will then be updated.
// If you want to maintain the value of "this" in the function, then do
// something like
var t = setTimeout("next_step.call(MyContext, 2)", 0);
// using call to set the function's context.
Суть в том, что пользователь увидит что-то изменяющееся на экране. Заметьте, что шаг уступки с таймаутом 0 занимает довольно много времени, условно говоря. Так что мой код тестирует браузер и выполняет больше работы на блок, если это что-то кроме IE.
Очень важно предоставлять изменяющуюся обратную связь пользователю. В противном случае они думают, что это займет больше времени, чем на самом деле.
НТН,
Ларри