ACE编辑器"解析结束"事件

时间:2014-09-22 21:21:51

标签: javascript ace-editor

我想在ACE编辑器结束解析新源代码时调用一个函数,例如,在每个后续的.ace_identifier DOM节点上添加一个click事件监听器。到目前为止,我找不到正确的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')

1 个答案:

答案 0 :(得分:1)

没有'#34;结束解析"的事件,您可以在afterRender上使用editor.renderer事件,但是ace使用dom作为画布,仅为可见部分创建节点文本,并经常丢弃和重绘整个事物,因此将事件监听器添加到ace编辑器内的dom节点是一个坏主意。

您可以改为向编辑器添加侦听器,并使用session.getToken在游标下获取令牌。

在ace Google论坛中进行的讨论可能会有所帮助https://groups.google.com/d/msg/ace-discuss/XFnf3-3gcAY/u7OIMdHkGGwJ