右键单击Firefox,Bootstrap下拉消失

Baz*_*ze_ 5 firefox twitter-bootstrap drop-down-menu

我有一些twitter-bootstrap和firefox的问题.我有一个按钮和一个带有输入文本的下拉菜单.如果我右键单击输入(例如右键单击+粘贴),Firefox将关闭下拉列表.这很无聊.

是否有任何解决方案可以防止这种行为?

谢谢 !

mer*_*erv 5

作为一个直接的止损解决方法,您可以使用以下行中的内容来防止点击事件在单击右键单击时传播

JS

$(document).on('click', function(e) {
  e.button === 2 && e.stopImmediatePropagation()
})
Run Code Online (Sandbox Code Playgroud)

这需要放在jQuery加载和Bootstrap加载之间.

普拉克

然而,这是一种相当直率的方法,如果可能的话,你最好做一些更微妙的事情.


更新

以更有针对性的方式绕过此问题的一种方法是禁用原始事件侦听器,并将其替换为首先检查右键单击的侦听器.

JS

// obtain a reference to the original handler
var _clearMenus = $._data(document, "events").click.filter(function (el) {
    return el.namespace === 'data-api.dropdown' && el.selector === undefined
  })[0].handler;

// disable the old listener
$(document)
  .off('click.data-api.dropdown', _clearMenus)
  .on('click.data-api.dropdown', function (e) {
    // call the handler only when not right-click
    e.button === 2 || _clearMenus()
  })
Run Code Online (Sandbox Code Playgroud)

与前面的示例不同,此代码需要加载Bootstrap 运行.

普拉克