SweetAlert está funcionando perfeitamente, mas estou tendo um erro. Eu uso o modal bootstrap e, enquanto o tenho aberto, uso também o SweetAlert. Depois de clicar em 'Cancelar', 'OK' .... no SweetAlert, recebo este erro 'Intervalo não capturado: Tamanho máximo da pilha de chamadas excedido'. O problema está aqui:
if (btnIndex === -1) {
// Something in the dom, but not a visible button. Focus back on the button.
$targetElement.focus();
}
Quando comento este código, não recebo mais o erro.
PS: Não recebo esse erro quando não estou com o modal aberto.
Eu também tive esse erro.
É porque SweetAlert travando com o modal de bootstrap, eu acho que você está tentando fazer um alerta doce quando você tem um modal aberto (de bootstrap). É quando o erro que você mencionou está acontecendo.
Você precisa de alguma forma (bem, eu não sei quais são suas necessidades) primeiro fechar o modal de bootstrap e só então solicitar o alerta doce. E vai ficar tudo bem.
Obrigado @littleneotrix. Exatamente, eu estava tentando fazer o alerta doce enquanto o modal bootstrap era aberto e sua solução funcionava totalmente, mas no meu aplicativo eu precisava deixar assim, por isso tive que comentar o código.
Bem, então você pode experimentar e brincar um pouco ...
Você pode usar o Javascript antes de abrir o Sweetalert, basta usar .hide () no modal de bootstrap,
e só então abra o Sweetalert, mas faça assim mais ou menos:
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')});
Como você pode ver na função no final do objeto, digo a ele para solicitar de volta o modal.
Então ... primeiro ocultar o modal -> solicitar o sweetalert -> na confirmação do sweetalert, solicitar de volta o modal.
Essa é a melhor solução que posso oferecer;)
A menos, é claro, que o bootstrap conserte isso.
Estou passando pelo mesmo problema. É um problema de bootstrap ou sweetalert? A mensagem de aviso no meu caso é gerada por sweetalert, mas pode ser causada por bootstrap.
Eu tenho o mesmo erro
no meu caso, eu tenho botões no meu modal, os botões significam para deletar coisas, quando clicado eu uso o swal para confirmar, neste ponto nenhum erro, mas quando eu prossigo e clico no botão 'cancelar' ou 'confirmar', eu obtenho o erro.
Estou recebendo esse problema também, adiando o uso da classe de alerta do bootstrap por enquanto.
Encontrei o mesmo problema e descobri uma maneira decente de lidar com isso. Basicamente, oculto o modal, mostro o swal e, ao confirmar, trago de volta o modal. Se alguém estiver usando pop-up magnífico, por exemplo, o código seria semelhante a este:
$('.mfp-wrap').hide();
swal({
title: "Updated!",
text: "#" + data.updateData['number'] + " was successfully updated",
type: "success"
},
function(isConfirm) {
$('.mfp-wrap').show();
});
Isso é basicamente o que @littleneotrix estava falando. Eu simplesmente não entendi sua explicação no início e pensei em dar um exemplo mais detalhado. Acho que é uma solução elegante o suficiente para o meu caso de uso.
Para aqueles que estão perguntando, não acho que haja muito que os desenvolvedores possam fazer para corrigir esse problema. Modais duplos e retornos de chamada são pesados.
Eu tenho a solução:
Comentário :
$targetElement.focus ();
_Provavelmente na linha 413._
Basta adicionar $.fn.modal.Constructor.prototype.enforceFocus = function () {};
antes de chamar swal(...);
Vamos mantê-lo em um único problema: https://github.com/aspnetboilerplate/aspnetboilerplate-templates/issues/48
Sinta-se à vontade para tentar novamente no SweetAlert 2.0.
Comentários muito úteis
Eu tenho a solução:
Comentário :
$targetElement.focus ();
_Provavelmente na linha 413._