gpt4 book ai didi

jquery - Ace Editor 同步滚动

转载 作者:行者123 更新时间:2023-12-01 02:21:54 29 4
gpt4 key购买 nike

我有两个同时运行的 Ace 编辑器 session ,我正在尝试同步两个编辑器的垂直滚动。我找到了一个可以与普通 Div 一起使用的简单 jQuery 方法,但是如何才能使其与 Ace 一起正常工作?

jQuery 方法:

$("#editor1").scroll(function () { 
$("#editor2").scrollTop($("#editor1").scrollTop());
$("#editor2").scrollLeft($("#editor1").scrollLeft());
});

$("#editor2").scroll(function () {
$("#editor1").scrollTop($("#editor2").scrollTop());
$("#editor1").scrollLeft($("#editor2").scrollLeft());
});

显然,上述方法不适用于Ace。我一直在这里查看 Ace API: Virtual Renderer 寻求解决方案,但在编辑器上滚动时我什至无法设置任何回调函数。

API 中有对滚动条的引用 Here ,但似乎无法让它做任何事情。我尝试像这样测试它......

editor.ScrollBar.on('scroll', function() {
alert('Callback?');
});

有人可以帮我解决这个问题吗? :) 谢谢。

编辑

下面的解决方案确实有效,但(就我而言)它几乎立即使浏览器(Chrome)崩溃。我在它上面设置了一个超时功能来限制它的触发速度,但它仍然不可避免地崩溃。有想法吗?

editor.getSession().on('changeScrollTop', function(scroll) {
setTimeout(function() {
editor2.getSession().setScrollTop(scroll);
}, 1000);
});

最佳答案

信息:我添加了滚动到顶部时发生崩溃的解决方法

终于明白了:

editor.getSession().on('changeScrollTop', function(scroll) {
editor2.getSession().setScrollTop(parseInt(scroll) || 0)
});

您可以看到一个工作演示 here on CodePen

关于jquery - Ace Editor 同步滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14751633/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com