jQuery Focus在firefox上失败了

Mad*_*iha 24 firefox jquery

当我注意到一些非常特殊的东西时,我一直在测试另一个问题.FF4/5无法触发focusjQuery事件.可能被认为是重复的另一个问题已被关闭并被接受而没有真正的答案.

对于问题本身,我尝试了以下简单的代码:

$('#target').focusout(function() {
    $(this).focus();
});
Run Code Online (Sandbox Code Playgroud)

它在Chrome和IE中运行良好,但在FF上失败.这是我们中间懒人的jsFiddle.

谁能解释这种行为?或者它是一个已知的错误?

cha*_*aos 48

我想我之前遇到过这种情况,如果我没记错的话,它似乎是某种重入问题.我的印象是,因为FF已经在转换焦点的过程中,它不会让你启动另一个焦点转换.我相信我的解决方法就像

$('#target').focusout(function() {
    setTimeout(function() {
        $(this).focus();
    }, 0);
});
Run Code Online (Sandbox Code Playgroud)

  • +1因为`focus()`在Firefox中有效.它只包含在这个`focusout()`里面,似乎造成了麻烦. (4认同)
  • 确认超时为0将起作用.此外,它不仅仅是focusout(),而是涉及焦点更改的任何操作,在我的例子中只是一个简单的.click()处理程序. (2认同)