Firefox 上错误的 mouseenter 事件

Wrong mouseenter event on Firefox

我在 div 元素中有一个输入。输入在默认情况下是隐藏的,当鼠标悬停在容器上时应该是可见的。在任何 keydown 事件中,输入应该被隐藏。显然,用户必须单击输入字段才能输入文本。

这是我的plnkr

 var container = $('#container');
 var flicker = $('#flicker').hide();
  var log = $('#log');
  container.on('mouseenter', function() {
    flicker.show();
    log.prepend('<div>mouseenter</div>');
  });
  flicker.on('keydown', function() {
    flicker.hide();
    setTimeout(function() {
      flicker.show();
    }, 4000);
  })

它在 Chrome 上完美运行,但在 Firefox (OS x) 上运行失败。 在 Firefox 上,输入字段不会消失,而且效果不理想。

有什么建议吗?

这似乎是 firefox 的一个错误。

我想通了。 这很简单。 只需使用 visibility: hidden 而不是 display: none。假设使用 flicker.addClass('hidden') 而不是 flicker.hide() 或类似的东西。

另一种方法是在 flicker.hide() 后关闭 mouseenter 事件,并在 150 毫秒后再次启用。但是因为setTimeout,看起来有点难看。

The css example.

css 方法在 firefox、chrome、safari、opera 中运行良好。 但请注意 display: nonevisibility: hidden 之间的 difference