IE8 предупреждение о том, что скрипт выполняется долго.
Добрый день.
Есть такой простой код: for (var i = 0; i < 5000000; i++){ } Его выполнение занимает около секунды, однако браузер IE8 (и ниже) выдаёт предупреждение о том, что он выполняется долго и предлагает его приостановить. Есть, конечно, вариант через setTimout продолжать выполнение скрипта (тогда сообщения не будет), но хотелось бы какой-то более правильный способ. |
Более правильный способ -- делать скрипты, которые не выполняются около секунды. Например, разделить на несколько тиков через setTimeout. Или переписать на более быструю версию.
|
Выполнение скрипта около секунды это вполне нормально.
И потом тут дело не во времени, а в количестве выполняемых подряд операторов - в IE это число равно 5млн/ |
Цитата:
|
В RIA нормально.
|
kidar2, ненормально. В течении всего этого времени ваш браузер не будет реагировать ни на какие запросы. Причём ладно - ваш, но пользователи-то причём?
|
|
Цитата:
|
Цитата:
|
Цитата:
где нет поддержки workers - можно использовать setTimeout и разбивать на куски долгую задачу |
Цитата:
setTimeout != worker |
Всем спасибо.
Похоже что решения проблемы кроме как через setTimeout нету. |
Странные вы, напишите ошибку в Гугле и получите решение проблемы.
Если работа вашего скрипта требуется пользователям, тогда пусть ставят заплатку. http://support.microsoft.com/kb/175500/ru Если вы собираетесь мутужить пользователей без их ведома, что значит для вас пользователи - это быдлы. Для IE (ниже 9) есть возможность обхода этого сообщения. Но для вашей задачи из темы топика, выкладывать метод реализации данного обхода не вижу смысла. |
А можно поинтересоваться, зачем всё-таки 5 миллионов шагов? Браузер проверяет не только время выполнения скрипта, но и количество итераций в цикле. С точки зрения Microsoft если 5000000 шагов, то что-то здесь не оптимально. И если у Вас машина быстрая и выполняет это за 1 сек., то у других это может выполняться за 10 сек...
|
Цитата:
kidar2, Ты хоть ссылку на сайт кинь в который это встраивать будешь, что бы я знал что туда не стоит заходить. |
Ну и народ тут... :-E
Подобного рода скрипты используются в первую очередь для нагрузочных тестов на браузеры, вот например. А вы накинулись на человека, спор тут развели, нормально или ненормально, вопрос был не об этом! |
Ну ну. Бедные простые пользователи, с надеждой запускают нагрузочные тесты в своем стареньком IE и с удивлением обнаруживают что IE не тянет их )))
|
Нагрузочные тесты запускают разработчики, а не пользователи, мне это казалось очевидным.
А так как скрипты зачастую должны работать на большом количестве браузеров (и даже на IE), причём не только работать, но и делать это быстро - приходится проводить подобные тесты, и в процессе работы сталкиваться с описанными выше трудностями. |
Разве долгое выполнение тестов - это трудность?
Как по мне - это данность. Это даже наоборот намеренно делается. Чем больше циклов - тем корректнее результат. Ну и если бы ты прочитал весь тред, то увидил бы что речь про приложения, а не какие-то там тесты. В любом случае автор топика чета перемудрил, ибо я не могу представить себе зачем могут понадобиться такие емкие циклы. |
Никто и не говорил про долгое выполнение тестов. В тестах как раз и используется большое число циклов, да.
А описанная выше проблема делает проведение теста крайне затруднительным (так как через каждую 1-2 секунды выводится это предупреждение, и так происходит много-много раз). |
Часовой пояс GMT +3, время: 21:28. |