Sweetalert: 「UncaughtRangeError:最大呼び出しスタックサイズを超えました」を取得しています。 エラー

作成日 2014年10月10日  ·  10コメント  ·  ソース: t4t5/sweetalert

SweetAlertは完全に機能していますが、エラーが発生しています。 私はブートストラップモーダルを使用しており、開いている間はSweetAlertも使用しています。 SweetAlertで[キャンセル]、[OK]をクリックすると、次のエラーが発生します。'UncaughtRangeError:Maximum call stack sizeexceeded 'エラー。 問題はここにあります:

      if (btnIndex === -1) {
        // Something in the dom, but not a visible button. Focus back on the button.
        $targetElement.focus();
      }

このコードにコメントすると、エラーは発生しなくなりました。
PS:モーダルを開いていない場合、このエラーは発生しません。

最も参考になるコメント

私には解決策があります:
コメントアウト:
$targetElement.focus ();
_おそらく413行にあります。_

全てのコメント10件

私もこのエラーがありました。
これは、SweetAlertがブートストラップモーダルでクラッシュするためです。(ブートストラップの)モーダルが開いているときに、スイートアラートを表示しようとしていると思います。 あなたが言及したこのエラーが起こっているのはその時です。
どういうわけか(まあ、私はあなたのニーズが何であるかわかりません)最初にブートストラップモーダルを閉じてから、甘いアラートを促す必要があります。 そしてそれは大丈夫でしょう。

@littleneotrixに感謝します。 正確には、ブートストラップモーダルが開かれ、ソリューションが完全に機能しているときに、甘いアラートを表示しようとしていましたが、アプリではそのままにしておく必要があったため、コードにコメントする必要がありました。

さて、あなたはそれを少し試して遊ぶことができます...
Sweetalertを開く直前にJavascriptを使用できます。ブートストラップモーダルで.hide()を使用するだけです。
それからSweetalertを開きますが、多かれ少なかれそのようにします。

swal({   title: "Are you sure?",   text: "Your will not be able to recover this imaginary file!",   type: "warning",   showCancelButton: true,   confirmButtonColor: "#DD6B55",   confirmButtonText: "Yes, delete it!",   closeOnConfirm: false }, function(){   $('#myModal').modal('show')});

オブジェクトの最後にある関数でわかるように、モーダルを元に戻すように彼に指示します。
だから...最初にモーダルを非表示にします-> sweetalertを促します-> sweetalertの確認で、モーダルを促します。
それが私が提供できる最善の解決策です;)
もちろんブートストラップがこの問題を修正しない限り。

同じ問題が発生しています。 これはブートストラップまたはスイートアラートの問題ですか? 私の場合の警告メッセージはsweetalertによって生成されますが、ブートストラップが原因である可能性があります。

同じエラーが発生しました
私の場合、モーダルにボタンがあります。ボタンは物を削除することを意味します。クリックすると、swalを使用して確認します。この時点ではエラーはありませんが、続行して[キャンセル]または[確認]ボタンをクリックすると、エラー。

今のところ、ブートストラップのアラートクラスの使用を延期して、この問題も発生しています。

私は同じ問題に遭遇し、それを処理する適切な方法を思いついた。 私は基本的にモーダルを非表示にし、スワルを表示し、確認時にモーダルを戻します。 たとえば、壮大なポップアップを使用している場合、コードは次のようになります。

$('.mfp-wrap').hide();
swal({
    title: "Updated!",
    text: "#" + data.updateData['number'] + " was successfully updated",
    type: "success"
},
function(isConfirm) {
    $('.mfp-wrap').show();
});

これは基本的に@littleneotrixが話していたことです。 最初は彼の説明がわからなかったので、もっと詳細な例を挙げようと思いました。 私はそれが私のユースケースにとって十分にエレガントな解決策であると思います。

質問者にとって、この問題を解決するために開発者ができることはあまりないと思います。 ダブルモーダルとコールバックは多額です。

私には解決策があります:
コメントアウト:
$targetElement.focus ();
_おそらく413行にあります。_

ただ、追加$.fn.modal.Constructor.prototype.enforceFocus = function () {};呼び出す前にswal(...);

1つの問題にまとめましょう: //github.com/aspnetboilerplate/aspnetboilerplate-templates/issues/48

SweetAlert2.0でこれを再試行してください。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

voodoo6 picture voodoo6  ·  4コメント

blackrosezy picture blackrosezy  ·  6コメント

vmitchell85 picture vmitchell85  ·  6コメント

Lusitaniae picture Lusitaniae  ·  4コメント

waldyrious picture waldyrious  ·  5コメント