Tooltip.jsとpopover.jsを含めています。
私のマークアップが次のように見えるとき:
<button class="popover-dismiss" data-toggle="popover" title="sheen"
data-content="<a href="sheen60">60</a>, <a href="sheen80">80</a>">
PDS
</button>
jSで
$('.popover-dismiss').popover({
trigger: 'focus',
html: 'true'
})
その後、すべてが正常に動作します。ただし、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>
まったく同じ属性。ボタンの代わりにアンカーのみ。また、スパンを使用してみましたが、どちらも機能していないようです。
それでは、Twitter Bootstrapにバグがあることがわかりました。数回開閉されました。
現在、回避策があります:
1)bootstrap popoversの初期化時にtrigger: focus
を使用しないでください。
2)代わりに、ポップオーバーをトリガーするアイテムの属性としてdata-trigger="focus"
を使用します
3)ポップオーバーのあるアイテムは、tabindex="-1"
を明示的に宣言する必要があります。
ここでのクロスブラウザーの動作例: http://jsfiddle.net/v5L7m/3/
また、実際のユースケースシナリオでこれを確認しました。
Edit:@xanderielは、tabindex=0
がブラウザのネイティブフォーカス境界を引き起こすように見えることに注意しました。彼らは、-1
のtabindexがこの境界を排除すると言います。
さて、トリガーとして「フォーカス」を使用する場合、要素はフォーカス可能でなければなりません。 tabindexを設定すると、要素が強制的にフォーカス可能になります。そのため、tabindexが設定されると、トリガー「フォーカス」が機能し始めます。
ユーザーが実際にタブキーを押す要素で停止すると思われない場合は、-1のtabindexの使用を検討してください。
これですべてです。トリガー:フォーカスは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>
JS:
$(function() {
$(document).popover({
selector: '[data-toggle=popover]',
trigger: 'focus'
});
});
JSFiddle:https://jsfiddle.net/s02ykLo2/
popover()
呼び出しにcontainer: 'body'
オプションを設定してみてください。