Ошибка 'stack out of space' при обработке onpropertychange в ie<9
Имеется функция-обработчик события onpropertychange. В теле функции-обработчика содержатся многовложенные вызовы других функций.
При возникновении события возникает ошибка 'stack out of space'. При этом:
Единственное объяснение которое я нашел - когда функция-обработчик имеет большую вложенность, это приводит к эффекту подобному бесконечному рекурсивному вызову (с сайта msdn). При этом написание обработчика с меньшей вложенностью (все проверки в одной функции) в моем случае приведет к плохо структурированному коду. Сталкивался ли кто-то с такой проблемой? |
svicserg,
а можно код в студию? |
Цитата:
|
Вложений: 1
Цитата:
Прилагаю код. |
Цитата:
Цитата:
|
хм, странно не могу воспроизвести ошибку
|
Стесняюсь спросить . Весь смысл кода перевести 3 десятичных числа в 3 шестнадцатиричных и сложить их?
Серьёзный код. По настоящему требует запуска множества функций .... :) Строк 20- 30 до кучи при правильной вёрстке. Решение проблемы с переполнением стека -научиться составлять алгоритмы |
Даже очень странно. Я тестировал в IE9 в режиме браузера IE8. Сейчас попробовал запустить на другом компьютере, где стоит именно IE8 и действительно все работает...
|
Цитата:
всем спасибо за ответы! |
elem.onpropertychange = function() { if (!elem._lock) { setTimeout(function() { // блокируем выполнение повторного события elem._lock = true; // тут много-много-много-много кода // .... // снимаем блокировку elem._lock = false; }, 0); } // обработчик будет спокойно отпущен // сразу же после выполнения setTimeout(); // не ожидая выполнения вложенных скриптов // // повторный вызов события не запустит огромный код, // если он был ранее запущен и еще не выполнился. } |
Часовой пояс GMT +3, время: 18:30. |