скрипт на этой странице вызывает то есть работать медленно - PullRequest
30 голосов
/ 17 октября 2008

Проблема в названии - IE плохо себя ведет и говорит, что скрипт работает медленно - FF и Chrome не имеют этой проблемы.

Как я могу найти проблему. На этой странице много JS. Проверка вручную - не очень хорошая идея

РЕДАКТИРОВАТЬ: Это страница из проекта, над которым я работаю ... но мне нужен инструмент, чтобы найти проблему.

Конец: Оказалось, что это UpdatePanel - каким-то образом это «запуталось» и заняло бы слишком много времени, чтобы что-то обработать. Я просто выбросил его в окно - теперь буду использовать только JQuery: D.

И я выбираю ответ Реми Шарпа, потому что я действительно не знал об инструменте, и он кажется довольно крутым.

Ответы [ 14 ]

52 голосов
/ 27 февраля 2010

Длительные скрипты по-разному определяются разными браузерами:

  • IE выдаст предупреждение после выполнения 5 миллионов операторов ( больше информации о MSDN )
  • Firefox предупредит, если сценарий займет больше 10 секунд ( больше информации о MDN )
  • Safari предупредит, если сценарий займет больше 5 секунд
  • Chrome (1.0) не имеет установленного предела и будет просто пытаться до тех пор, пока не произойдет исключение OutOfMemory, в котором и произойдет сбой
  • Опера будет продолжать работать вечно, без предупреждения.

Николас Закас написал отличную статью на эту тему.

Таким образом, лучший способ избежать этих проблем - уменьшить количество циклов, рекурсии и манипуляций с DOM.

18 голосов
/ 18 октября 2008

Получите себе копию IBM Page Profiler:

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=61d74777-1701-4014-bfc0-96067ed50156

Это бесплатно (всегда выигрыш). Запустите его в фоновом режиме, подождите несколько секунд, затем обновите страницу в IE. Вернитесь к профилировщику, и он перечислит все ресурсы, использованные на странице, и предоставит вам подробную информацию о профиле - в частности, где JavaScript выполняется очень долго.

Это должно стать хорошим началом для поиска источника вашей проблемы.

Если теги сценария встроены, я бы предложил создать локальную копию файла и разделить теги сценария на отдельные файлы, если вы можете.

9 голосов
/ 17 октября 2008

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

3 голосов
/ 17 октября 2008

Это обычно бесконечный цикл, который вызывает это. Проверьте свои петли и условия их выхода.

1 голос
/ 11 декабря 2013

Я обнаружил, что добавление оповещения («до X») («после X») помогло мне найти мою проблему. Я добавил их в свой $ (function () {

}

1 голос
/ 28 февраля 2012

Убедитесь, что приведенный ниже код JavaScript выполняется только один раз:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(win_onload);

Над кодом находится внутри функции win_onload().

1 голос
/ 03 июня 2011

Вы также можете проверить, есть ли на вашей странице JavaScript-аналитика Google. Ошибка произошла только с IE, и после удаления кода Google это сработало!

1 голос
/ 27 февраля 2010

Для IE диалог основан на количестве обработанных команд JS. Смотрите здесь информацию и способ изменить значение по умолчанию: http://support.microsoft.com/kb/175500

0 голосов
/ 16 сентября 2014

Есть несколько причин для такого рода предупреждения

  1. Нет. инструкций JS, выполняемых IE, превышает предопределенные пределы. Это можно исправить, отредактировав реестр Windows, см. Здесь

  2. Оптимизируйте код JavaScript, чтобы сократить время выполнения.

  3. Оптимизация кода JS является реальной проблемой проб и ошибок, и для этого существует несколько правил большого пальца. Просто Google это.
0 голосов
/ 17 июля 2014

@ nikmd23 ответ носит информативный характер.

Мои 2 цента здесь ... У меня возникла проблема с предупреждением скрипта - из-за загрузки элементов dropdown list с помощью цикла for.

Я сослался на сообщение @Eric Leschinski в Отключение сообщения с продолжительным скриптом в Internet Explorer .

См. setTimeout для загрузки элементов в раскрывающемся списке , чтобы увидеть, как я решил эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...