【问题标题】:My Bootstrap popover is not working, how can I debug it?我的 Bootstrap 弹出窗口不工作,我该如何调试它?
【发布时间】:2018-04-17 12:35:04
【问题描述】:

我已经看到了以下答案:

1) Twitter's Bootstrap popover not working

2)Twitter bootstrap .popover not working

3)Bootstrap Popover not working

没有人能帮我解决问题。

我正在尝试在 Bootstrap 中使用弹出框,我单击按钮但弹出框没有出现。

我找不到问题。这是弹出框的 HTML 代码,我是从文档中得到的。

        <button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
            Popover on top
        </button>

这是与导入相关的代码。

<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" href="/style/global.css">
<link rel="stylesheet" href="/bower_components/lightslider/dist/css/lightslider.css">
<link rel="stylesheet" type="text/css" href="/style/flags/flags.css"/>
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<script src="/script/index.js"></script>
<script src="/bower_components/popper.js/dist/popper.js"></script>
<script src="/bower_components/bootstrap/dist/js/bootstrap.js"></script>
<script src="/bower_components/lightslider/dist/js/lightslider.js"></script>

【问题讨论】:

  • 您使用的是什么版本的 Bootstrap 和 jQuery?您的开发者控制台是否指示与资源加载或冲突相关的任何错误?您是否包含了启用弹出框所需的 JS(它是 Bootstrap 的“选择加入”组件,默认情况下不启用)。
  • 我添加了popper.js(问题已更新)。这些版本是bower 给我的。导入 popper.js 后,我注意到两个新错误:SyntaxError: Unexpected keyword 'export'in popper.js line 2371 和 TypeError: Bootstrap tooltips require Popper.js (https://popper.js.org) in jquery.min.js line 31048。我不明白为什么会有这两个错误,我也没有接触过刚刚用 bower 下载的源代码。
  • 我们真的需要更多细节......因为 Bootstrap 放弃了官方的 Bower 支持,我们不知道包含哪些版本的 jQuery、Popper 或 Bootstrap。但听起来您的 Popper.js 资产有一个错误导致它无法正确加载,这会导致级联效应导致错误 w/ Bootstrap,因为它不能使用 Popper 进行定位。
  • 谢谢。我不知道 bootstrap 已经放弃了 bower。感谢您的建议,我删除了使用 bower 下载的软件包,并使用 npm 重新下载了它们。现在一切都很好。你可以回答我的问题,所以你投票。

标签: html twitter-bootstrap import popover


【解决方案1】:

根据我们在 cmets 中的讨论 - 这里的罪魁祸首可能是 Bower。 Bootstrap 在 V4 中放弃了 Bower,转而使用 Yarn 或 npm:

已弃用作为包管理器的 Bower 支持 替代品(例如,Yarn 或 npm)。有关详细信息,请参阅 bower/bower#2298

https://getbootstrap.com/docs/4.0/migration/#breaking

依靠不同的包管理器或手动包含 Bootstrap 是确保所有 CSS 和 JavaScript(因为它与 Bootstrap 相关)符合 V4 要求的最佳途径。

【讨论】:

    【解决方案2】:

    您可能缺少 popover 的实例...尝试添加

    $(function () {
      $('[data-toggle="popover"]').popover()
    });
    

    并验证您的链接是否正确。 同时验证其要求here

    【讨论】:

    • 我将它添加到$(document).ready(function () { $('[data-toggle="popover"]').popover(); ... });,但仍然无法正常工作。
    • 您使用的是哪个引导程序版本?
    【解决方案3】:

    请进行以下更改,然后重试。

    在 head 部分包含 css 文件,在 '' 之前包含 JS 文件。

    同时添加下面的js代码:

    $(document).ready(function () {$(function () {
      $('[data-toggle="popover"]').popover()
    });
    

    主要问题在于css冲突:

    用这个替换你的按钮

    <button type="button" class="btn btn-default povr" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
      Popover on top
    </button>
    

    并添加这个 css

    .povr{ margin-top:50px;}
    

    这将解决问题。根据需要更改 CSS。

    Fiddle

    【讨论】:

    • 我做了你建议的改变。此外,我在包含bootstrap.js 之前导入了popper.js。但仍然无法正常工作。您认为如果您发布网站链接,它对您的帮助会更大吗?
    • 我刚刚添加了js小提琴链接,请查看。
    • 非常感谢您的帮助,我检查了它是否有效,如链接所示。但是,我的项目存在一些冲突,我试图弄清楚是什么,但我没有找到错误。
    • 第一个代码示例中是否有两个文档准备相互嵌套?
    • 嗯,因为你已经在 .ready 函数中使用function () { $('[data-toggle="popover"]').popover() });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2020-04-13
    • 1970-01-01
    • 2012-10-23
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多