强制将焦点设置回Firefox

时间:2015-12-25 10:38:34

标签: javascript jquery firefox setfocus

适用于除Firefox以外的所有浏览器

function editorFocusLost(event) {
    // Trying to set focus back
    setTimeout(function() {
        $editorBody[0].focus();
    }, 4);
}
// Listen for focus lost event
$editorBody[0].addEventListener('DOMFocusOut', editorFocusLost, false);

我还尝试过一些不同的事件,例如“焦点失效”,“模糊”,“DOMFocusOut”等,但它在Firefox中不起作用。但我们可以通过变通方法解决问题。然而,设置焦点的主要问题是$ editrBody [0] .focus()也没有在Firefox中触发

https://jsfiddle.net/mm1mbqto/1/

1 个答案:

答案 0 :(得分:1)

DOMFocusOut事件在firefox中不起作用;你必须使用模糊事件。

唯一的问题是最初关注,在firefox中,焦点最初并未设置为满足,这可能是由于jsfiddle本身的问题。我在jsbin尝试过并且工作正常。

(function($) {

  var $body = $('.editor');
  $body[0].focus();

  function editorFocusLost(event) {
    setTimeout(function() {
      $body[0].focus();
    }, 4);

  }
  $body[0].addEventListener('blur', editorFocusLost, false);

})(jQuery);
.container {
  margin: 0 auto;
  width: 100%;
  padding: 50px;
}
.editor {
  width: 300px;
  height: 100px;
  background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container">
  <label for="">Editor</label>
  <div class="editor" contenteditable="true"></div>
  <input>
</div>