首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何切换sweetalert2主题?

如何切换sweetalert2主题?
EN

Stack Overflow用户
提问于 2022-10-21 14:04:30
回答 1查看 97关注 0票数 2

我有一个sweetalert2模式,它有一个暗模式的切换开关,我想要切换这个模式的暗模式。

我试过:

代码语言:javascript
复制
Swal.fire({
            title: 'Settings',
            icon: 'question',
            iconHtml: '<i class="fa fa-cog settings-modal-icon"></i>',
            html: settingsMenuHtml,
            showCloseButton: true,
            showCancelButton: true,
            confirmButtonText: 'Save',
            onOpen: () => {
                document.querySelectorAll('input[type="checkbox"]')[0].checked = Nightly.isDark;
            },
      onBeforeOpen: () => {
        if(Nightly.isDark){
          var ss = document.createElement('link');
          ss.rel = "stylesheet";
          ss.href="//cdn.jsdelivr.net/npm/@sweetalert2/theme-dark@4/dark.css";
          document.head.appendChild(ss);
        }  
      }
})

但是这阻止了整个页面的加载。

我该怎么解决这个??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 14:59:23

请检查Sweetalert2文档willOpendidOpen,您应该使用它而不是onBeforeOpenonOpen

除此之外,我将Nightly.isDark设置为true (用于黑暗模式),并为settingsMenuHtml添加了一些最低限度的代码,这是使您的模式工作所必需的。

此外,为了启用切换,我创建了一个setCSSLink()函数,可以在触发willOpen和单击“设置”复选框时调用该函数。

下面是一个工作代码片段:

代码语言:javascript
复制
Nightly.isDark = true;

settingsMenuHtml = 
  '<input type="checkbox" onclick="Nightly.isDark = !Nightly.isDark; setCSSLink()">';

Swal.fire({
  title: 'Settings',
  icon: 'question',
  iconHtml: '<i class="fa fa-cog settings-modal-icon"></i>',
  html: settingsMenuHtml,
  showCloseButton: true,
  showCancelButton: true,
  confirmButtonText: 'Save',
  didOpen: () => {
    document.querySelectorAll('input[type="checkbox"]')[0].checked = Nightly.isDark;
  },
  willOpen: () => {
    setCSSLink()
  }
})

function setCSSLink() {
  var ss = document.createElement('link');
  ss.rel = "stylesheet";
  if (Nightly.isDark) {
    ss.href = "//cdn.jsdelivr.net/npm/@sweetalert2/theme-dark@4/dark.css";
  } else {
    ss.href = "//cdn.jsdelivr.net/npm/@sweetalert2/theme-minimal/minimal.css";
  }
  document.head.appendChild(ss);
}
代码语言:javascript
复制
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="https://cdn.jsdelivr.net/gh/fcmam5/nightly.js@v1.0/dist/nightly.min.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74154859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档