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