延迟 sweetalert2 中按钮的出现

Delay appearance of buttons in sweetalert2

我正在使用 SweetAlert2 向用户传达一些反馈。这是一个学习应用程序,因此,我希望反馈能持续一段时间。我不想在显示反馈后立即显示任何按钮,因为人们倾向于只点击 'OK' 或 'Cancel',而不阅读文本。

反馈中的字符数因屏幕而异,因此,我将 sweetalert2 的计时器参数设置为文本中字符数的倍数。但是,计时器功能并不完善,因为人们的阅读速度不同。理想情况下,我希望 'OK' 按钮在计时器超时后出现。我可以进行某种 API 调用来动态更改警报框的 属性 吗?

swal({
        html: feedback,
        timer: feedback.length*50,
        showCloseButton: false,
        showCancelButton: false,
        showConfirmButton: false,
        allowOutsideClick: false,
    });

您好,要实现此目的,您可以使用设置超时功能并在您希望显示的按钮上调用 jQuery 的 .show() 功能(假设您可以使用 jQuery ).

下面的代码应该能帮到你

swal({
        html: feedback,
        timer: feedback.length*50,
        showCloseButton: false,
        showCancelButton: false,
        showConfirmButton: false,
        allowOutsideClick: false,
    });
    setTimeout(function () {
        $(".swal2-cancel").show();
        $(".swal2-confirm").show();
        $(".swal2-close").show();
    }, 3000);

希望对您有所帮助:-)

我没有看到任何隐藏和显示按钮的方法,但您可以禁用和启用它们:

swal({
  html: 'test',
  allowOutsideClick: false,
  allowEscapeKey: false,

  onOpen: function () {
    swal.disableButtons();
    setTimeout(swal.enableButtons, 'test'.length * 500) 
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.css">

或使它们透明:

swal({
  html: 'test',
  allowOutsideClick: false,
  allowEscapeKey: false,

  onOpen: function () {
    var b = swal.getConfirmButton()
    b.style.opacity = 0
    b.disabled = true
    
    setTimeout(function() {
      b.disabled = false
      b.style.opacity = 1
    }, 'test'.length * 500) 
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.css">

或隐藏和显示:

swal({
  html: 'test',
  allowOutsideClick: false,
  allowEscapeKey: false,

  onOpen: function () {
    var b = swal.getConfirmButton()
    b.hidden = true
    b.disabled = true
    
    setTimeout(function() {
      b.disabled = false
      b.hidden = false
    }, 'test'.length * 500) 
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.9/sweetalert2.min.css">