【发布时间】:2016-08-02 02:32:20
【问题描述】:
我正在尝试做的事情: 在 Ace Editor html 脚本中收集所有类和 id 名称。
现在我的计划是检测用户更改 (.on('change'...)) 并使用光标位置获取当前令牌。如果令牌不是“未引用”的“属性值”类型,我想遍历以前的令牌以找到该“属性值”所属的“属性名称”类型令牌并确定它是否是一个类或 id(我不能只检测“属性名称”令牌的创建,因为用户可以稍后返回并更改属性值而不更改名称,我需要检测这些更改)。
除了获取以前的令牌之外,我什么都能做。我查阅了一些文档,TokenIterator 应该能够做到这一点,但是当我尝试做类似var iter = new TokeIterator() 的事情时,我的控制台说TokenIterator 是未定义的。我一遍又一遍地搜索谷歌,但没有找到任何结果。如果真相在那里,我显然没有使用正确的词来找到它,但它们是我唯一得到的词。
Ace 中是否内置了某种方式来迭代令牌?我知道我在控制台记录编辑器实例对象时没有看到所有属性和方法,因为我可以在脚本中使用在该日志中看不到的方法。有没有可以做我想做的事?
如果没有,我该如何加载 TokenIterator?我认为当我不久前尝试使用 SnippetManager 时发生了类似的事情,结果我实际上必须这样做才能使其工作:
var tillPageLoaded = setInterval(function() { // Makes sure page doesn't load forever on startup
if( document.readyState === 'complete') {
clearInterval(tillPageLoaded);
ace.config.loadModule('ace/ext/language_tools', function () {
editor.insertSnippet( myString );
});
}
}, 5);
这是同样的情况吗?如果是这样,.loadModules(...) 中需要包含什么?我需要在某处引用脚本吗?是否需要以其他方式加载?
Ace 的内置功能是否已经可以满足我的所有需求?
除此之外,如果有人对如何与 Ace 一起解决这个问题有任何更好的想法,我们将非常欢迎。
【问题讨论】:
标签: javascript ace-editor