Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   IE8 предупреждение о том, что скрипт выполняется долго. (https://javascript.ru/forum/css-html-internet-explorer/23108-ie8-preduprezhdenie-o-tom-chto-skript-vypolnyaetsya-dolgo.html)

kidar2 12.11.2011 10:27

IE8 предупреждение о том, что скрипт выполняется долго.
 
Добрый день.

Есть такой простой код:

for (var i = 0; i < 5000000; i++){
}

Его выполнение занимает около секунды, однако браузер IE8 (и ниже) выдаёт предупреждение о том, что он выполняется долго и предлагает его приостановить.
Есть, конечно, вариант через setTimout продолжать выполнение скрипта (тогда сообщения не будет), но хотелось бы какой-то более правильный способ.

Kolyaj 12.11.2011 10:30

Более правильный способ -- делать скрипты, которые не выполняются около секунды. Например, разделить на несколько тиков через setTimeout. Или переписать на более быструю версию.

kidar2 12.11.2011 10:39

Выполнение скрипта около секунды это вполне нормально.
И потом тут дело не во времени, а в количестве выполняемых подряд операторов - в IE это число равно 5млн/

Kolyaj 12.11.2011 10:41

Цитата:

Сообщение от kidar2
Выполнение скрипта около секунды это вполне нормально.

Подвисание браузера на секунду -- это ненормально.

kidar2 12.11.2011 11:16

В RIA нормально.

trikadin 12.11.2011 15:08

kidar2, ненормально. В течении всего этого времени ваш браузер не будет реагировать ни на какие запросы. Причём ладно - ваш, но пользователи-то причём?

Pavel M. 14.11.2011 00:18

может быть помогут web workers
http://y3x.ru/2011/01/webworkers/
?

kidar2 14.11.2011 12:22

Цитата:

Сообщение от Pavel M. (Сообщение 136310)
может быть помогут web workers
http://y3x.ru/2011/01/webworkers/
?

Их нету даже в IE9, не то чтобы в IE8.

kidar2 14.11.2011 12:23

Цитата:

Сообщение от trikadin (Сообщение 136038)
kidar2, ненормально. В течении всего этого времени ваш браузер не будет реагировать ни на какие запросы. Причём ладно - ваш, но пользователи-то причём?

Ну пусть не за секунду выполняется скрипт, а за 0,1... кол-во операций всё равно таким же будет.

Pavel M. 14.11.2011 13:09

Цитата:

Сообщение от kidar2
Их нету даже в IE9, не то чтобы в IE8.

если в ie8 нет, например, поддержки css border-radius, то по вашему это никто не использует?

где нет поддержки workers - можно использовать setTimeout и разбивать на куски долгую задачу

kidar2 14.11.2011 13:31

Цитата:

Сообщение от Pavel M. (Сообщение 136392)
если в ie8 нет, например, поддержки css border-radius, то по вашему это никто не использует?

где нет поддержки workers - можно использовать setTimeout и разбивать на куски долгую задачу

Причём тут border-radius ?
setTimeout != worker

kidar2 14.11.2011 13:32

Всем спасибо.
Похоже что решения проблемы кроме как через setTimeout нету.

UDN 14.11.2011 19:47

Странные вы, напишите ошибку в Гугле и получите решение проблемы.
Если работа вашего скрипта требуется пользователям, тогда пусть ставят заплатку. http://support.microsoft.com/kb/175500/ru

Если вы собираетесь мутужить пользователей без их ведома, что значит для вас пользователи - это быдлы.

Для IE (ниже 9) есть возможность обхода этого сообщения.
Но для вашей задачи из темы топика, выкладывать метод реализации данного обхода не вижу смысла.

Маэстро 08.12.2011 04:11

А можно поинтересоваться, зачем всё-таки 5 миллионов шагов? Браузер проверяет не только время выполнения скрипта, но и количество итераций в цикле. С точки зрения Microsoft если 5000000 шагов, то что-то здесь не оптимально. И если у Вас машина быстрая и выполняет это за 1 сек., то у других это может выполняться за 10 сек...

devote 08.12.2011 17:34

Цитата:

Сообщение от Маэстро
А можно поинтересоваться, зачем всё-таки 5 миллионов шагов?

Ради извращения наверно.

kidar2,
Ты хоть ссылку на сайт кинь в который это встраивать будешь, что бы я знал что туда не стоит заходить.

12345678 01.03.2014 12:20

Ну и народ тут... :-E
Подобного рода скрипты используются в первую очередь для нагрузочных тестов на браузеры, вот например.
А вы накинулись на человека, спор тут развели, нормально или ненормально, вопрос был не об этом!

danik.js 01.03.2014 13:21

Ну ну. Бедные простые пользователи, с надеждой запускают нагрузочные тесты в своем стареньком IE и с удивлением обнаруживают что IE не тянет их )))

12345678 01.03.2014 14:59

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

danik.js 01.03.2014 15:33

Разве долгое выполнение тестов - это трудность?
Как по мне - это данность. Это даже наоборот намеренно делается. Чем больше циклов - тем корректнее результат.

Ну и если бы ты прочитал весь тред, то увидил бы что речь про приложения, а не какие-то там тесты. В любом случае автор топика чета перемудрил, ибо я не могу представить себе зачем могут понадобиться такие емкие циклы.

12345678 02.03.2014 15:56

Никто и не говорил про долгое выполнение тестов. В тестах как раз и используется большое число циклов, да.
А описанная выше проблема делает проведение теста крайне затруднительным (так как через каждую 1-2 секунды выводится это предупреждение, и так происходит много-много раз).


Часовой пояс GMT +3, время: 21:28.