右键单击Firefox,引导下拉菜单消失

右键单击Firefox,引导下拉菜单消失,firefox,twitter-bootstrap,drop-down-menu,Firefox,Twitter Bootstrap,Drop Down Menu,我对twitter引导和firefox有一些问题。 我有一个按钮和一个带有输入文本的下拉菜单。如果我右键单击输入(例如,右键单击+粘贴),firefox将关闭下拉列表。这很无聊 有没有办法防止这种行为 谢谢 作为一种即时的权宜之计,您可以使用以下方法防止单击事件为右键单击时单击事件传播 JS 这需要放在jQuery加载和引导加载之间 然而,这是一个相当直率的方法,如果可能的话,你最好做一些更微妙的事情 更新 以更有针对性的方式规避此问题的一种方法是禁用原始事件侦听器,并将其替换为首先检查右键单

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

有没有办法防止这种行为


谢谢

作为一种即时的权宜之计,您可以使用以下方法防止单击事件为右键单击时单击事件传播

JS 这需要放在jQuery加载和引导加载之间

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


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

JS 与前面的示例不同,此代码需要在加载引导后运行


对于bootstrap3,您必须将名称空间更新为
bs.data api.dropdown

JS
有趣。最近将引导程序插件的click监听器委托给
$(文档)
而不是
$('body')
的做法似乎有负面的副作用。FF不会通过右键单击的
传播单击事件,但会通过
文档
传播一个。这是一个非常有用的修复程序,等待引导团队的正式响应。我在他们的Github上打开了一个问题,我将把最终的演变放在这里。感谢您的快速响应和高质量!干杯好的,这似乎是一个官方问题(他们在中键点击上也有问题)。如果你在鼠标悬停检查时打开了下拉菜单,这在firefox中仍然不起作用
$(document).on('click', function(e) {
  e.button === 2 && e.stopImmediatePropagation()
})
// 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()
  })
// obtain a reference to the original handler
var _clearMenus = $._data(document, "events").click.filter(function (el) {
  return el.namespace === 'bs.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()
  })