Bootstrap 弹出窗口在第二次加载时起作用
Bootstrap popover works on second load
我用 bootstrap 在 Sharepoint 上制作了一个网页,内容填充了 javascript。我在 table 中使用弹出窗口。 table 是通过 javascript 生成的。奇怪的是,弹出窗口只有在我用 F5 刷新 page/reloaded 后才起作用。
table 之外的弹出窗口在第一次加载时工作正常。代码在我的本地机器上运行良好,没有问题,但在共享点上它崩溃了。
这里是一些代码——初始化:
<script src="jquery-3.5.1.slim.min.js"></script>
<script src="popper.min.js"></script>
<script src="bootstrap.min.js"></script>
然后调用生成table的函数:
<body onload="javascript: GenerateTable();">
随后是 popper 调用:
$(function () {
$('.example-popover').popover({
})
})
结果是 table,其中包含以下带有 popper 的行:
<td>Here is a question which needs a popper as info!
<div class="row justify-content-end">
<a href="#!" tabindex="0" class="badge badge-info" role="button" data-toggle="popover" data-trigger="focus" title="" data-content="This is a funny popover" title="Info">Info</a>
</div>
</td>
在我看来这是加载顺序的问题 - 但无法弄清楚为什么它在本地有效但在 Sharepoint 上无效。
我从 CDN 导入 js,它在我的环境中运行良好。
供您参考的测试代码:
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<body >
<td>Here is a question which needs a popper as info!
<div class="row justify-content-end">
<a href="#!" tabindex="0" class="badge badge-info" role="button" data-toggle="popover" data-trigger="focus" title="" data-content="This is a funny popover" title="Info" data-placement="right">Info</a>
</div>
</td>
</body>
<script>
$(function () {
$('.badge').popover();
})
</script>
测试结果:
如果您需要进一步的帮助,请分享完整的代码。
问题是 javascript 执行的顺序。由于代码是从外部 javascript 文件加载的,因此不知道代码的加载顺序。
因此建议将html文件中的javascript函数放入javascript文件中的显式函数中。然后必须显式调用该函数。
Javascript 文件:
function PopperCall(){
$('.example-popover').popover({});
$('.popover-dismiss').popover({trigger: 'focus'});
$('[data-toggle="popover"]').popover();
}
在 HTML 中,加载是通过以下方式完成的:
<body onload="javascript: GenerateTable(); PopperCall();">
我用 bootstrap 在 Sharepoint 上制作了一个网页,内容填充了 javascript。我在 table 中使用弹出窗口。 table 是通过 javascript 生成的。奇怪的是,弹出窗口只有在我用 F5 刷新 page/reloaded 后才起作用。
table 之外的弹出窗口在第一次加载时工作正常。代码在我的本地机器上运行良好,没有问题,但在共享点上它崩溃了。
这里是一些代码——初始化:
<script src="jquery-3.5.1.slim.min.js"></script>
<script src="popper.min.js"></script>
<script src="bootstrap.min.js"></script>
然后调用生成table的函数:
<body onload="javascript: GenerateTable();">
随后是 popper 调用:
$(function () {
$('.example-popover').popover({
})
})
结果是 table,其中包含以下带有 popper 的行:
<td>Here is a question which needs a popper as info!
<div class="row justify-content-end">
<a href="#!" tabindex="0" class="badge badge-info" role="button" data-toggle="popover" data-trigger="focus" title="" data-content="This is a funny popover" title="Info">Info</a>
</div>
</td>
在我看来这是加载顺序的问题 - 但无法弄清楚为什么它在本地有效但在 Sharepoint 上无效。
我从 CDN 导入 js,它在我的环境中运行良好。 供您参考的测试代码:
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<body >
<td>Here is a question which needs a popper as info!
<div class="row justify-content-end">
<a href="#!" tabindex="0" class="badge badge-info" role="button" data-toggle="popover" data-trigger="focus" title="" data-content="This is a funny popover" title="Info" data-placement="right">Info</a>
</div>
</td>
</body>
<script>
$(function () {
$('.badge').popover();
})
</script>
测试结果:
如果您需要进一步的帮助,请分享完整的代码。
问题是 javascript 执行的顺序。由于代码是从外部 javascript 文件加载的,因此不知道代码的加载顺序。
因此建议将html文件中的javascript函数放入javascript文件中的显式函数中。然后必须显式调用该函数。
Javascript 文件:
function PopperCall(){
$('.example-popover').popover({});
$('.popover-dismiss').popover({trigger: 'focus'});
$('[data-toggle="popover"]').popover();
}
在 HTML 中,加载是通过以下方式完成的:
<body onload="javascript: GenerateTable(); PopperCall();">