我有一个可以自行触发的事件。我试图尽可能地使代码高效,但在某些情况下,它可能会触及最大调用堆栈,而这些情况是我无法控制的。它不是无限堆栈,它最终会结束,但有时由于限制,它在完成之前可能潜在崩溃。
如果我设置了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);
});
}
}
这只是一个示例代码,但即使在这种情况下,如果你有100个按钮,调用堆栈也会有100个。请注意,如果你使用$('button').attr('disabled', true);
,这会导致调用堆栈问题,因为jQuery将无限尝试修改DOM。