检测代码镜像编辑器的焦点

alp*_*mon 3 html javascript css jquery codemirror

我在我正在创建的网络应用程序中使用 codemirror,并且页面上有几个编辑器。还有撤消和重做按钮,它们确实有效。但是,我只能将一个编辑器设置为撤消,除非我使用 if 语句来确定聚焦于哪个编辑器,然后将撤消或重做功能应用于其相应的文本框。我尝试了 jQuery 和 JavaScript 的一些变体,但没有成功。这是我试图开始工作的代码块之一。保存代码镜像设置的实际变量称为“codeeditor1”,“#editor1”是文本框的 ID。

if ($("#editor1").is(':focus')) {
  undo.addEventListener('click', function() {
      codeeditor1.undo();
  }, false);
  redo.addEventListener('click', function() {
      codeeditor1.redo();
  }, false);
}
Run Code Online (Sandbox Code Playgroud)

我还根据方法“cm.hasFocus()”= boolean 的文档尝试了这一点。

if (codeeditor1.hasFocus() == true) {
    undo.addEventListener('click', function() {
        codeeditor1.undo();
    }, false);
    redo.addEventListener('click', function() {
        codeeditor1.redo();
    }, false);
}
Run Code Online (Sandbox Code Playgroud)

为了逻辑代码放置,我现在也尝试过这个,但仍然没有成功。也许这是codemirror方法中的一个错误?

undo.addEventListener('click', function() {
    if (codeeditor1.hasFocus() == true) {
        codeeditor1.undo();
    }
}, false);

redo.addEventListener('click', function() {
    if (codeeditor1.hasFocus() == true) {
        codeeditor1.redo();
    }
}, false);
Run Code Online (Sandbox Code Playgroud)

Has*_*baş 6

尝试

  if( editor.hasFocus() == true  ) 
      // This editor is Codemirror object 
      // not jquery element.
  }
Run Code Online (Sandbox Code Playgroud)