«Переполнение стека в строке 0» в Internet Explorer - PullRequest
38 голосов
/ 22 октября 2008

Я понимаю, что это не идеальное место, чтобы спросить об этом с точки зрения поиска, но у меня есть страница, чей код JavaScript выдает ошибки «Переполнение стека в строке 0», когда я смотрю на это в Internet Explorer.

Проблема явно не в строке 0, а где-то в списке того, что я пишу в документ. В Firefox все работает нормально, поэтому у меня нет прелестей Firebug и друзей, которые могут помочь в устранении неполадок.

Существуют ли стандартные причины для этого? Я предполагаю, что это, вероятно, ошибка Internet Explorer 7 или что-то совершенно неясное, и мой Google-fu приносит мне немного радости в настоящее время. Я могу найти много людей, которые сталкивались с этим раньше, но я не могу понять, как они решили это.

Ответы [ 13 ]

32 голосов
/ 02 марта 2010

Недавно я столкнулся с этой проблемой и написал пост о конкретном случае в нашем коде, который вызывал эту проблему.

http://cappuccino.org/discuss/2010/03/01/internet-explorer-global-variables-and-stack-overflows/

Краткий итог: рекурсия, которая проходит через глобальный объект хоста, ограничена глубиной стека 13. Другими словами, если ссылка, используемая вызовом вашей функции (не обязательно сама функция), была определена в некотором окне формы .foo = функция, то повторение через foo ограничено глубиной 13.

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

Aha!

У меня было событие OnError() в каком-то коде, который устанавливал для источника изображения путь по умолчанию, если он не был найден. Конечно, если путь к изображению по умолчанию не найден, это вызовет обработчик ошибок ...

Для людей, у которых похожая проблема, но не та же, я думаю, что причиной этого, скорее всего, является либо неопределенный цикл, обработчик события, который запускает сам себя, либо что-то подобное, которое бросает движок JavaScript в оборот.

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

Вы можете отключить параметр "Disable Script Debugging" в Internet Explorer и начать отладку с помощью Visual Studio, если вам это удалось.

Я обнаружил, что это один из немногих способов диагностики некоторых из этих IE специфических проблем.

7 голосов
/ 01 декабря 2009

У меня была эта проблема, и я решил ее. В теге <%@ Page был атрибут MaintainScrollPositionOnPostback, и после его удаления ошибка исчезла. Я добавил его раньше, чтобы предотвратить прокрутку после каждой обратной передачи.

3 голосов
/ 02 марта 2012

Если вы пришли сюда из-за проблем с тестами на селен: IE не нравится By.id("xyz"). Вместо этого используйте By.name, xpath или что-то еще.

2 голосов
/ 04 февраля 2012

Я настроил проект по умолчанию и обнаружил следующее:

Проблема в комбинации smartNavigation и keepScrollPositionOnPostBack Ошибка возникает только тогда, когда оба установлены в true.

В моем случае ошибка была вызвана:

<pages smartNavigation="true" maintainScrollPositionOnPostBack="true" />

Любая другая комбинация работает нормально.

Кто-нибудь может это подтвердить?

2 голосов
/ 13 мая 2010

Также наличие smartNavigation = "true" вызывает это "

1 голос
/ 25 октября 2013

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

$('.numbersonly').on("keyup input propertychange", function () {
    //code
});

Сообщение об ошибке отображалось при вводе данных в это текстовое поле. Мы удалили событие «propertychange» из кода выше, и теперь оно работает правильно.

P.S. может быть, это кому-нибудь поможет

1 голос
/ 22 января 2013

Мой был "в строке 1", но ...

Эта проблема возникла при использовании метода jQuery .clone. Я заменил их, используя объекты jQuery из строки html: $($(selector).html()).

1 голос
/ 10 декабря 2010

  1. Свойства обозревателя
  2. Инструменты
  3. Опции интернета
  4. Advanced
  5. Раздел навигации
  6. Нажмите> Отключить отладку скрипта

    отображать уведомление о каждой ошибке скрипта

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