在这个社区的帮助下,我能够使我的ace编辑器达到最高位置,因此当用户输入或修改它时,编辑器会随代码一起增长。我最近意识到这可以防止用户尝试突出显示代码。当你开始突出显示代码并在到达窗口底部时开始向下拖动它停止,它不会像你期望的那样向下滚动窗口。
这是我用来使编辑器达到全高的代码。指向JSFiddle的链接在
下面var editor = ace.edit("editor-html");
setEditorOptions(editor, 'html');
setTimeout(function() {
heightUpdateFunction();
}, 100);
function setEditorOptions(editor, type) {
editor.setShowPrintMargin(false);
editor.setTheme("ace/theme/clouds");
editor.getSession().setMode("ace/mode/"+type);
editor.getSession().on('change', heightUpdateFunction);
}
function heightUpdateFunction() {
var newHeight = (editor.getSession().getScreenLength() + 1) * editor.renderer.lineHeight + editor.renderer.scrollBar.getWidth();
$('#editor-html').css('height', newHeight.toString() + "px");
editor.resize();
if (newHeight <= 1) {
setTimeout(function() {
heightUpdateFunction();
}, 100);
}
}
我上传了一个示例来尝试jsfiddle.net。
当用户尝试高亮显示文本时,有没有办法修复滚动?
答案 0 :(得分:3)
您应该使用maxLines
和autoScrollEditorIntoView
选项。像这样:
var editor = ace.edit("editor-html");
editor.setOptions({
maxLines: 1000,
autoScrollEditorIntoView: true,
theme: "ace/theme/clouds",
showPrintMargin: false,
mode: "ace/mode/html"
})
请参阅https://github.com/ajaxorg/ace/blob/master/demo/autoresize.html#L39。
请注意,当heightUpdateFunction
选项尚未提供时,建议使用maxLines
,但效果不佳。您应该使用maxLines
代替它。
答案 1 :(得分:0)
如果将scrollSpeed
设置为零,也会发生。
editor.setScrollSpeed(0); // no scrolling
editor.setScrollSpeed(.5); // scrolling
我曾使用integer
来存储scrollSpeed
值,当我传递.5
时,它被转换为0,因为integers
只能是整数而且这个禁用滚动。我切换到使用允许小数的Number
或float
并重新开始滚动。