Ace编辑器焦点/模糊方法显然不能与termlib.js集成

时间:2014-06-11 16:02:42

标签: javascript focus blur ace-editor

我正在开发一个项目,我需要与终端模拟器集成的ace编辑器;所有问题 举例说明here

当人工交互失败时,问题就缺失了:用户在终端和编辑器上徘徊,直到他退出页面。我想在" hoved"上设置.focus()。 element和.blur()to" not hoved"元件。到终端,工作正常,机器人ace编辑器无法集中注意力。我无法在编辑器上推出一些字符。

显然jquery在这里不起作用:

$('#terminal').hover(function(){
  TermGlobals.setFocus(true);
}, function(){
  TermGlobals.setFocus(false);
})

$('#coffee_editor > textarea').hover(function(){
  window.editor.focus();
}, function(){
  window.editor.blur();
})

有人清楚地知道为什么它不能正常工作?

感谢您的一切

解决!

我记得RTFM

7.2  TermGlobals.keylock (Global Locking Flag)

The global flag `TermGlobals.keylock' allows temporary keyboard locking without any
other change of state. Use this to free the keyboard for any other resources.
(added in v.1.03)

所以我在jsfiddle中添加了以下内容:

$('#terminal').hover(function () {
    TermGlobals.keylock = false;
    term.focus();
}, function () {
    TermGlobals.setFocus(false);
});

$('#coffee_editor').hover(function () {
    TermGlobals.keylock = true;
    window.editor.focus();
}, function () {
    window.editor.blur();
});

奇怪的是jsfiddle无法正常工作,但在my project工作得很好。我正在运行一个Rails服务器,而jsfiddle在<iframe>内运行;为什么这种差异在工作?

1 个答案:

答案 0 :(得分:1)

ace并没有将任何可见的textarea附加侦听器添加到容器元素中。

$('#coffee_editor').hover(function(){
   window.editor.focus();
}, function(){
  window.editor.blur();
})