"Переполнение стека в строке 0" в Internet Explorer
Я понимаю, что это не идеальное место, чтобы спросить об этом с точки зрения поиска, но у меня есть страница, код JavaScript которой вызывает ошибки "переполнение стека в строке 0", когда я смотрю на него в Internet Explorer.
проблема явно не в строке 0, а где-то в списке вещей, которые я пишу в документ. Все отлично работает в Firefox, поэтому у меня нет прелестей Firebug и друзей, чтобы помочь в устранении неполадок.
есть ли стандартные причины для этого? Я предполагаю, что это, вероятно, ошибка Internet Explorer 7 или что-то довольно неясное, и мой Google-fu в настоящее время приносит мне мало радости. Я могу найти много людей, которые сталкивались с этим раньше, но я не могу найти, как они решили это.
13 ответов
вы можете включить выкл на "Disable Script Debugging"
опция внутри Internet Explorer и начать отладку с Visual Studio
если у вас это есть.
я обнаружил, что это один из немногих способов диагностики некоторые из этих IE
конкретные вопросы.
недавно я столкнулся с этой проблемой и написал сообщение о конкретном случае в нашем коде, который вызвал эту проблему.
http://cappuccino.org/discuss/2010/03/01/internet-explorer-global-variables-and-stack-overflows/
краткое резюме: рекурсия, которая проходит через глобальный объект хоста, ограничена глубиной стека 13. Другими словами, если ссылка, которую использует ваш вызов функции (не обязательно сама функция), была определено с некоторым окном формы.foo = функция, то рекурсия через foo ограничена глубиной 13.
Аха!
Я OnError()
событие в некотором коде, который устанавливал Источник изображения на путь изображения по умолчанию, если он не был найден. Конечно, если путь к изображению по умолчанию не найден, он вызовет обработчик ошибок...
для людей, которые имеют аналогичную проблему, но не то же самое, я думаю, что причиной этого, скорее всего, будет либо unterminated цикл, обработчик событий, который запускает себя или что-то подобное, что бросает движок JavaScript в спин.
у меня была эта проблема, и я ее решил. Был атрибут в <%@ Page
тег MaintainScrollPositionOnPostback
и после его удаления ошибка исчезла.
Я добавил его раньше, чтобы предотвратить прокрутку после каждой обратной передачи.
Если вы пришли сюда, потому что у вас проблема внутри ваших тестов:
IE не нравится By.id("xyz")
. Использовать.имя, xpath или что-то еще.
Я настроил проект по умолчанию и узнал следующее:
проблема сочетание smartNavigation и maintainScrollPositionOnPostBack. Ошибка возникает только в том случае, если оба параметра имеют значение true.
в моем случае, ошибка была произведена:
<pages smartNavigation="true" maintainScrollPositionOnPostBack="true" />
любая другая комбинация работает нормально.
может кто-нибудь подтвердить это?
- Свойства Обозревателя
- инструменты
- Свойства обозревателя
- дополнительно
- раздел навигации
- нажмите > отключить отладку скриптов
отображение уведомления о каждой ошибке скрипта
- вход
- вы будете улыбаться !
мой был "в строке 1" вместо "но"...
у меня возникла эта проблема при использовании jQuery .clone
метод. Я заменил их, используя создание объектов jQuery из строки html:$($(selector).html())
.
я воспроизвел ту же ошибку на IE8. В одном из текстовых полей есть обработчики событий для замены недопустимых данных.
$('.numbersonly').on("keyup input propertychange", function () {
//code
});
сообщение об ошибке было показано при вводе данных в это текстовое поле. Мы удалили событие "propertychange" из кода выше, и теперь оно работает правильно.
P. S. Может это поможет кому-то
Я не знаю, что вам сказать, но та же проблема возникла с сортировкой и поиском таблицы jQuery. Когда в таблице ничего не осталось, например, при поиске строки, вы также получаете эту ошибку. Даже в Google Analytics эта ошибка возникает часто.
в моем случае у меня было две функции a()
и b()
. Первый звал второго, а второй звал первого:--6-->
var i = 0;
function a() { b(); }
function b() {
i++;
if (i < 30) {
a();
}
}
a();
я решил это с помощью setTimeout
:
var i = 0;
function a() { b(); }
function b() {
i++;
if (i < 30) {
setTimeout( function() {
a();
}, 0);
}
}
a();
это проблема с Java и Flash Player. Установите последнюю версию Java и Flash Player, и проблема будет решена. Если нет, то установите Mozilla Firefox, он автоматически установит необходимые обновления.