bootstrap modal上彈出dialog 報錯Maximum call stack size exceeded

昨天修改alert彈出的警告太難看了,改用dialog對話框,而後就報了一個錯:javascript

jquery-2.0.2.min.js:5 Uncaught RangeError: Maximum call stack size exceeded.

反覆測試,在bootstrapmodal模態框上彈出了jQuery UIdialog,才報這個錯的。css

堆棧溢出!!!
感受這個問題挺嚴重的,怎麼調試都找不到報錯的緣由,上網搜了一下,資料以下:
瀏覽器JS報錯Uncaught RangeError: Maximum call stack size exceeded
JS 異常: Uncaught RangeError: Maximum call stack size exceededhtml

歸根結底,緣由是遞歸調用了,可是,如同第二個連接裏所說的:java

表面上看,是由於遞歸次數太多致使內存被耗費太多,可是個人程序中,並無一處使用遞歸算法啊
個人js中一樣是沒有使用遞歸調用的狀況啊,差點要放棄了。
問題的根源在於網頁中引用了兩個不一樣的JavaScript庫,而這兩個庫都對JavaScript原始對象的某些方法作了修改,從而致使出現了循環引用

仔細研究了下jQuery UI 實例 - 對話框(Dialog),恍然大悟,dialog本質上也是modal
咱們這裏形成報錯的緣由 是 咱們使用的bootstrapmodal模態框jQuery UI dialog的肯定按鈕的click事件衝突了,也就是說,問題的根源是引用了兩個不一樣的JavaScript庫,他們都對彈出的modal作出了修改,我兩個同時嵌套使用的時候,就形成了遞歸調用。jquery

最終,解決辦法是將dialog的modal設置爲false:算法

$(function() {
    $( "#dialog-modal" ).dialog({
      height: 140,
      modal: false
    });
  });

jQuery UI 實例 - 對話框(Dialog)中也說了:bootstrap

模態確認
確認一個動做多是破壞性的也多是有意義的。設置 modal 選項爲 true,並經過 buttons 選項來指定主要的和次要的用戶動做。

哎。。。總之,問題解決了。瀏覽器

相關文章
相關標籤/搜索