Javascript 王牌编辑“;“解析结束”;事件

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 editor结束对新源代码的解析时调用一个函数,例如,在每个后续
.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
。您是如何知道将
指针事件设置为“无”的!我为此花费了大量精力和时间!我稍后将使用优化的方法。这是到目前为止的原型设计。