昨天修正alert弹出的正告太难看了,改用dialog对话框,然后就报了一个错:
jquery-2.0.2.min.js:5 Uncaught RangeError: Maximum call stack size exceeded.
重复测试,在bootstrap
的modal
模态框上弹出了jQuery UI
的dialog
,才报这个错的。
客栈溢出!!!
觉得这个题目挺严峻的,怎样调试都找不到报错的缘由,上网搜了一下,材料以下:
浏览器JS报错Uncaught RangeError: Maximum call stack size exceeded
JS 非常: Uncaught RangeError: Maximum call stack size exceeded
归根结柢,缘由是递归挪用了,然则,犹如第二个链接里所说的:
表面上看,是因为递归次数太多致使内存被消耗太多,然则我的顺序中,并没有一处运用递归算法啊
我的js中同样是没有运用递归挪用的状况啊,差点要摒弃了。
题目的泉源在于网页中援用了两个差别的JavaScript库,而这两个库都对JavaScript原始对象的某些要领做了修正,从而致使涌现了轮回援用
细致研讨了下jQuery UI 实例 – 对话框(Dialog),豁然开朗,dialog
本质上也是modal
。
我们这里形成报错的缘由 是 我们运用的bootstrap
的modal
模态框和jQuery UI dialog
的肯定按钮的click
事宜争执了,也就是说,题目的泉源是援用了两个差别的JavaScript库,他们都对弹出的modal做出了修正,我两个同时嵌套运用的时刻,就形成了递归挪用。
终究,解决办法是将dialog的modal设置为false:
$(function() {
$( "#dialog-modal" ).dialog({
height: 140,
modal: false
});
});
jQuery UI 实例 – 对话框(Dialog)中也说了:
模态确认
确认一个行动多是破坏性的也多是有意义的。设置 modal 选项为 true,并经由过程 buttons 选项来指定重要的和次要的用户行动。
哎。。。总之,题目解决了。