71

我正在使用 sweet-alert 插件来显示警报。使用经典配置(默认),一切正常。但是当我想在 TEXT 中添加一个 HTML 标记时,它会显示<b>...</b>而不加粗。搜索答案后,似乎我没有正确的搜索词...

如何让甜蜜的警报也用 HTML 代码显示文本?

var hh = "<b>test</b>";
swal({
    title: "" + txt + "", 
    text: "Testno  sporocilo za objekt " + hh + "",  
    confirmButtonText: "V redu", 
    allowOutsideClick: "true" 
});
4

12 回答 12

211

SweetAlert repo 似乎没有维护。有一堆 Pull Requests 没有任何回复,最后一个合并的 pull request 是在 2014 年 11 月 9 日。

我创建了带有 HTML 支持的SweetAlert2模态窗口和一些其他用于自定义模态窗口的选项 - 宽度、填充、Esc 按钮行为等。

Swal.fire({
  title: "<i>Title</i>", 
  html: "Testno  sporocilo za objekt: <b>test</b>",  
  confirmButtonText: "V <u>redu</u>", 
});
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

于 2015-01-08T14:50:06.157 回答
74

最近在 GitHub https://github.com/t4t5/sweetalert/commit/9c3bcc5cb75e598d6faaa37353ecd84937770f3d上的主分支中添加了允许标题和文本参数的 HTML 的功能

只需使用 JSON 配置并将 'html' 设置为 true,例如:

swal({ html:true, title:'<i>TITLE</i>', text:'<b>TEXT</b>'});

这在不到一周前被合并,并在 README.md 中有所暗示(其中一个示例中的 html 设置为 false,尽管没有明确描述)但是尚未在营销页面http://tristanedwards.me上记录/甜心

于 2015-01-23T09:49:01.970 回答
37

我正在从旧的 sweetalert 升级,并在新版本(官方文档)中找到了如何做到这一点:

// this is a Node object    
var span = document.createElement("span");
span.innerHTML = "Testno  sporocilo za objekt <b>test</b>";

swal({
    title: "" + txt + "", 
    content: span,
    confirmButtonText: "V redu", 
    allowOutsideClick: "true" 
});
于 2018-03-21T08:31:49.500 回答
13

Sweet alerts 还有一个 'html' 选项,将其设置为 true。

var hh = "<b>test</b>";
swal({
    title: "" + txt + "", 
    html: true,
    text: "Testno  sporocilo za objekt " + hh + "",  
    confirmButtonText: "V redu", 
    allowOutsideClick: "true" 
});
于 2018-11-14T00:27:19.037 回答
11

截至 2018 年,接受的答案已过时:

Sweetalert 得到维护,您可以使用内容选项解决原始问题的问题。

于 2017-10-19T15:53:44.790 回答
10

我只是为此苦苦挣扎。我从 sweetalert 1 -> 2 升级。这个库:https ://sweetalert.js.org/guides/

文档“字符串”中的示例没有按我的预期工作。你不能这样说。

content: `my es6 string <strong>template</strong>` 

我是如何解决的:

const template = (`my es6 string <strong'>${variable}</strong>`);
content: {
      element: 'p',
      attributes: {
        innerHTML: `${template}`,
      },
    }

没有文档如何做到这一点,这是纯粹的反复试验,但至少似乎有效。

于 2018-10-02T09:11:06.237 回答
4

使用 SweetAlert 的html设置。

您可以将输出 html 直接设置为此选项:

var hh = "<b>test</b>";
swal({
    title: "" + txt + "", 
    html: "Testno  sporocilo za objekt " + hh + "",  
    confirmButtonText: "V redu", 
    allowOutsideClick: "true" 
});

或者

swal({
    title: "" + txt + "", 
    html: "Testno  sporocilo za objekt <b>teste</b>",  
    confirmButtonText: "V redu", 
    allowOutsideClick: "true" 
});
于 2019-03-10T05:17:12.690 回答
2

有甜蜜的警报版本 1 和 2。实际版本 2 适用于 HTML 节点。

我有一个 Sweet Alert 2,其数据表单如下所示:

<script>
 var form = document.createElement("div");
      form.innerHTML = `
      <span id="tfHours">0</span> hours<br>
      <input style="width:90%;" type="range" name="tfHours" value=0 step=1 min=0 max=25
      onchange="window.changeHours(this.value)"
      oninput="window.changeHours(this.value)"
      ><br>
      <span id="tfMinutes">0</span> min<br>
      <input style="width:60%;" type="range" name="tfMinutes" value=0 step=5 min=0 max=60
      onchange="window.changeMinutes(this.value)"
      oninput="window.changeMinutes(this.value)"
      >`;

      swal({
        title: 'Request time to XXX',
        text: 'Select time to send / request',
        content: form,
        buttons: {
          cancel: "Cancel",
          catch: {
            text: "Create",
            value: 5,
          },
        }
      }).then((value) => {
        console.log(value);
      });

 window.changeHours = function (value){
   var tfHours = document.getElementById("tfHours");
   tfHours.innerHTML = value;
 }
 window.changeMinutes = function (value){
   var tfMinutes = document.getElementById("tfMinutes");
   tfMinutes.innerHTML = value;
 }

去 Codepen 示例吧!

于 2020-06-07T22:07:46.277 回答
1

我知道我的答案可能来得太晚了,但我找到了一个适合我的修复方法。

  1. 创建一个对象以保存在您的 html 内容中

var html_element = '<p><code>This</code> is an error</p>';

  1. 然后继续创建你的甜蜜警报元素
swal({
    title: "My Title", 
    text: "",  
    html: true,  
    confirmButtonText: "Okay" 
});
  1. 使用 javascript setTimeout函数将您的 html 附加到甜蜜警报中。我发现将超时设置为 210 效果很好

    setTimeout(function(){
         $('.sweet-alert p:eq(0)').html(html_element)
    },210);
    

你已经做到了!

于 2021-06-18T15:40:58.747 回答
0

您所要做的就是将 html 变量设置为 true .. 我有同样的问题,我所要做的就是html : true

    var hh = "<b>test</b>"; 
swal({
        title: "" + txt + "", 
        text: "Testno  sporocilo za objekt " + hh + "",  
        html: true,  
        confirmButtonText: "V redu", 
        allowOutsideClick: "true"  
});

注意: html : "Testno sporocilo za objekt " + hh + "",
可能无法工作,因为html属性仅用于通过在Sweetalert中分配true / false值来激活此功能。这是在SweetAlert2中使用的
html : "Testno sporocilo za objekt " + hh + "",

于 2020-12-12T05:27:22.553 回答
-3

我刚刚应用了上面的补丁,它开始工作了。

diff --git a/sweet-alert.js b/sweet-alert.js
index ab6e1f1..d7eafaa 100755
--- a/sweet-alert.js
+++ b/sweet-alert.js
@@ -200,7 +200,8 @@
       confirmButtonColor: '#AEDEF4',
       cancelButtonText: 'Cancel',
       imageUrl: null,
-      imageSize: null
+      imageSize: null,
+      html: false
     };
 
     if (arguments[0] === undefined) {
@@ -224,6 +225,7 @@
           return false;
         }
 
+        params.html               = arguments[0].html;
         params.title              = arguments[0].title;
         params.text               = arguments[0].text || params.text;
         params.type               = arguments[0].type || params.type;
@@ -477,11 +479,18 @@
         $cancelBtn = modal.querySelector('button.cancel'),
         $confirmBtn = modal.querySelector('button.confirm');
 
+      console.log(params.html);
     // Title
-    $title.innerHTML = escapeHtml(params.title).split("\n").join("<br>");
+    if(params.html)
+      $title.innerHTML = params.title.split("\n").join("<br>");
+    else
+      $title.innerHTML = escapeHtml(params.title).split("\n").join("<br>");
 
     // Text
-    $text.innerHTML = escapeHtml(params.text || '').split("\n").join("<br>");
+    if(params.html)
+      $text.innerHTML = params.text.split("\n").join("<br>");
+    else
+      $text.innerHTML = escapeHtml(params.text || '').split("\n").join("<br>");
     if (params.text) {
       show($text);
     }

于 2015-07-22T16:14:28.517 回答
-11

我假设</在字符串中不被接受。

尝试通过在正斜杠“/”前面加上反斜杠“\”来转义它,例如:

var hh = "<b>test<\/b>";
于 2014-11-10T09:32:37.677 回答