JQuery和ACE-Editor不能很好地配合使用
JQuery and ACE-Editor not playing well together
我正在构建一些模块来教我的一些学生介绍编码概念http://jsbin.com/pacaxoza/3/edit
当用户编写自己的函数时,我希望编辑器在调用时跳转到函数时突出显示每行,以便用户可以看到他们的函数在调用时被读取。所有这些都在上面的jsbin中(基于代码的动画画布没有在jsbin中)。
在Javascript模式下,Ace Editor将所有用户定义的函数用class'ace_function'包围在一个span中。我找不到一种简单的方法来查找和存储用户在ace方法中创建的函数的值,所以我使用JQuery来查找类'ace_function'的每个跨度。我使用JQuery索引来查找这些函数所在的行,然后将该信息传递给ace方法以呈现。
问题是,如果编辑器滚动到顶部,一切都很好,但如果你在编辑器中向下滚动并点击提交,编辑器的索引似乎被几行代码所关闭,一切都崩溃了。
有没有人有更好的方法来解决这个问题,或者是什么导致了不稳定的行为?
谢谢
Ace使用虚拟视口并仅为可见行创建dom元素,因此使用jquery将不起作用。
您需要使用Ace api代替,session.getLine(number)->string
, session.getTokens(number)->[{type, value}, ...]
。
tokenIterator也可能很有用,参见https://github.com/ajaxorg/ace/blob/master/lib/ace/edit_session/bracket_match.js#L34查看示例
相关文章:
- 我如何才能让CasperJS和PhantomJS在约塞米蒂玩得很好
- 在Javascript中使用全局变量作为缓存是很好的
- 我在下拉列表中尝试了下一个和前五年的html代码.接下来的5年我都过得很好.我怎样才能拿到之前的5年
- JavaScript中的OOP太令人困惑了,ES6很棒,但没有得到很好的支持,该怎么办
- "此网站似乎使用滚动链接定位效果.这可能不能很好地与异步平移一起工作;
- html5:一个很好的加载方法
- mootools 1.4.2和angular 1.3在ie8中配合得很好
- Javascript是一个很好的日期选择器和时间选择器库
- 使用JavaScript验证用户交互/输入-这是一种很好的方法
- unbind().click(function(){..})是一种很好的做法
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- JQuery在Chrome中不起作用,但Firefox很好
- 这是一个很好的例子,显示了 JavaScript 中的 OOP 和过程编程之间的区别
- Javascript表排序工作得很好,但对所有索引进行迭代会得到不同的结果
- 以这种方式使用if/else-if/else是一种很好的做法
- 一个很好的JS库,用于容纳电气原理图
- webpack:在MacOS上很好,在linux上加载程序错误
- 动态更新Ace Editor+Requirejs的语法高亮显示
- wrap() 不能很好地与 after() 一起使用
- JQuery和ACE-Editor不能很好地配合使用