Javascript 王牌编辑“;“解析结束”;事件
我希望在ACE editor结束对新源代码的解析时调用一个函数,例如,在每个后续Javascript 王牌编辑“;“解析结束”;事件,javascript,ace-editor,Javascript,Ace Editor,我希望在ACE editor结束对新源代码的解析时调用一个函数,例如,在每个后续.ACE\u identifierDOM节点上添加一个单击事件侦听器。到目前为止,我找不到用于此目的的正确ACE事件,下面简单的代码没有任何作用: editor = ace.edit $('#editor') editor.setReadOnly true // editor change event - never triggered in this case editor.get
.ACE\u identifier
DOM节点上添加一个单击事件侦听器。到目前为止,我找不到用于此目的的正确ACE事件,下面简单的代码没有任何作用:
editor = ace.edit $('#editor')
editor.setReadOnly true
// editor change event - never triggered in this case
editor.getSession().on 'change', (e) ->
console.log e
// changing the language makes ACE parse the source code and generates
// a new DOM...
editor.getSession().setMode "ace/mode/javascript"
// ... but a this point, $('.ace_identifier') returns a empty array
// instead of the expected list of ace_identifiers created
console.log $('.ace_identifier')
没有用于“解析结束”的事件,您可以在编辑器上使用afterRender
事件。renderer
,但是ace使用dom作为画布,只为文本的可见部分创建节点,并且经常丢弃和重绘整个内容,因此在ace编辑器中向dom节点添加事件侦听器是个坏主意
您可以将侦听器添加到编辑器中,并使用session.getToken
获取光标下的令牌
ace google小组中的讨论可能对
afterRender
事件有帮助,我确实能够选择.ace\u标识符
DOMs,但在其上设置单击事件处理程序不起作用。您可以向其添加指针事件:自动样式。但正如我所说的,向每个节点添加事件处理程序是一个非常糟糕的主意,您应该使用editor.on(“单击”侦听器和会话。改为getToken
。您是如何知道将指针事件设置为“无”的!我为此花费了大量精力和时间!我稍后将使用优化的方法。这是到目前为止的原型设计。