У меня есть событие, которое может срабатывать само.Я пытаюсь сделать код максимально эффективным, но он может достигнуть максимального стека вызовов в некоторых случаях, которые находятся вне моего контроля.Это не бесконечный стек, и в какой-то момент он закончится, но иногда он может потерпеть крах до того, как закончится из-за ограничения.
Увеличу ли я количество стеков вызовов, если настрою 2 одинаковых прослушивателя событий и разделю код?Или что я могу сделать?
ОБНОВЛЕНИЕ : это событие DOM (работает только с Webkit, поэтому не заботятся о других браузерах), которое также может изменять DOM на основе некоторыхусловия.Я еще не достиг этого предела, но теоретически это возможно.Я все еще оптимизирую код, чтобы сделать как можно меньше манипуляций с DOM.
ОБНОВЛЕНИЕ 2 : Я включаю пример (не настоящий) пример:
document.addEventListener('DOMSubtreeModified', function(event){
this.applyPolicy(event);
}, true);
function applyPolicy(event){
if( typeof event != "undefined" ){
event.stopPropagation();
event.stopImmediatePropagation();
}
if( !isButtonAllowed ){
$('button:not(:disabled)').each(function(){
$(this).attr('disabled', true);
});
}
}
Это всего лишь пример кода, но даже в этом случае, если вы скажете, что кнопки, скажем, сотни, стек вызовов будет также и в сотнях.Обратите внимание, что если вы используете $('button').attr('disabled', true);
, это вызовет проблему стека вызовов, потому что jQuery будет пытаться бесконечно изменять DOM.