我想在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')
答案 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