为什么 Bootstrap 4 弹出窗口中缺少 HTML 属性?

Pri*_*ico 3 jquery twitter-bootstrap

$(document).ready(function () {
        $("[data-toggle=popover]").popover({
            html: true,
            content: function () {
                return "<div style='color:red;'>test</div>";
            }
        });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<a class="btn btn-primary" data-html="true" data-toggle="popover" data-placement="bottom">Click Me</a>
Run Code Online (Sandbox Code Playgroud)

当我在 Bootstrap 4 弹出窗口中使用 HTML 内容时,缺少 HTML 属性。我希望看到红色文本,但它输出没有红色样式的 div 标签。

    $("[data-toggle=popover]").popover({
        html: true,
        content: function () {
            return "<div style='color: red;'>Test</div>";
        }
    });
Run Code Online (Sandbox Code Playgroud)

chr*_*gle 6

Bootstrap 弹出窗口执行一些清理以去除“不安全”属性 - 默认情况下它是打开的。

与我之前的评论和我的测试相反,即使在旧版本中它也是默认的。知道手册总是好的:-)

https://getbootstrap.com/docs/4.4/components/popovers/#options

允许的属性是按标签定义的:

https://getbootstrap.com/docs/3.4/javascript/#js-sanitizer

可以将sanitize选项设置为 false将其关闭。

$("[data-toggle=popover]").popover({
  html: true,
  sanitize: false,
  content: function () {
    return "<div style='color: red;'>Test</div>";
  }
});
Run Code Online (Sandbox Code Playgroud)


Anu*_*ava -1

您可以添加一个类并将 css 设置为:

$(document).ready(function() {
  $('[data-toggle="popover"]').popover({
    html: true,
    content: function() {
      return "<div class='color-red'>Test</div>";
    }
  });
});
Run Code Online (Sandbox Code Playgroud)
.color-red{ color: red; }
Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" />

<a href="#" data-toggle="popover" title="Popover">Test</a>

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。原来这是我的 bootstrap 版本。无论我使用什么版本,都会删除 html 元素的所有属性。 (2认同)
  • 我也有同样的经历。事实证明,它在 Bootstrap 4.0.0 和 4.3.0 中工作,但从 4.4.0 开始,弹出窗口似乎过滤了大多数 html 属性(“id”、“class”),将显示,大多数其他属性(例如“data”)不会显示)。似乎 Bootstrap 中存在一些未记录的功能(错误?)。 (2认同)