Javascript 自举';s popover仅适用于按钮-不适用于锚点或跨距
我包括tooltip.js和popover.js 当我的标记看起来是这样时:Javascript 自举';s popover仅适用于按钮-不适用于锚点或跨距,javascript,twitter-bootstrap,popover,Javascript,Twitter Bootstrap,Popover,我包括tooltip.js和popover.js 当我的标记看起来是这样时: <button class="popover-dismiss" data-toggle="popover" title="sheen" data-content="<a href="sheen60">60</a>, <a href="sheen80">80&
<button class="popover-dismiss" data-toggle="popover" title="sheen"
data-content="<a href="sheen60">60</a>, <a href="sheen80">80</a>">
PDS
</button>
然后一切正常。但是,当我将按钮
更改为a
时,它会断开。控制台中没有错误。它只是没有弹出窗口
<a href="javascript://" class="popover-dismiss" data-toggle="popover" title="sheen"
data-content="<a href="sheen60">60</a>, <a href="sheen80">80</a>">
PDS
</a>
完全相同的属性。只是一个锚而不是一个按钮。我也尝试过使用span,但它似乎也不起作用。尝试为
popover()调用设置container:'body'
选项 好吧,原来Twitter引导程序中有一个bug。它已经被打开和关闭了好几次
目前有一个解决方案:
1) 初始化引导弹出窗口时不要使用trigger:focus
2) 相反,使用data trigger=“focus”
作为触发popover的项目的属性
3) 具有popover的项目需要显式声明tabindex=“-1”
跨浏览器工作示例如下:
我在一个真实的用例场景中也证实了这一点
Edit:@xandriel注意到tabindex=0
现在似乎会导致浏览器本机焦点边框,这正是我最初的答案所要求的。他们说tabindex的-1
消除了这个边界。好吧,我想如果你想使用“focus”作为触发器,你的元素必须是可聚焦的。设置tabindex会强制元素可聚焦,这就是为什么设置tabindex时触发器“聚焦”开始工作的原因
如果您不希望用户在点击tab键的元素上实际停止,请考虑使用tabindex-1
就这些。触发器:焦点可以在JS初始化中使用。不需要解决方法或任何东西。如果您通过JS设置信息,效果很好,下面是一个示例:
HTML:
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
$(function() {
$(document).popover({
selector: '[data-toggle=popover]',
trigger: 'focus'
});
});
jsIDLE:我没有问题。。好。。。真奇怪。你让我更深入一点。在Chrome中,我的页面和你的笔都有一个工作按钮和一个断开的链接。在Firefox中,“我的页面”和“你的笔”都有一个坏掉的按钮和一个工作链接…真的很有趣。。。我正在使用Firefox。@Stanley如果你通过谷歌来到这里希望找到解决方案,请查看下面我的自我回答,并让我知道它是否对你有效。@ChrisSobolewski它对我有效。谢谢设置container:“body”
并没有帮助,只有严格遵守这三条建议才使它对我有效。非常感谢。升级到Bootstrap Nuget package>3.2.0后,似乎至少不再需要tabindex=“0”。我必须另外添加href=“#”
,因为我的a
以前缺少一个。将其与Bootstrap 3.3.5一起使用谢谢,这在Bootstrap 4中仍然是一个问题。必须做以上所有的事情来修复它——这是一个很好的建议tabindex=-1
也适用于我–
tabindex=0在弹出框可见时在元素周围绘制难看的焦点边框。
$(function() {
$(document).popover({
selector: '[data-toggle=popover]',
trigger: 'focus'
});
});