如何在SCeditor中移动光标至插入文本的指定位置?
实现方案
你可以直接使用SCeditor自带的rangeHelper接口完成光标偏移,修改后的快捷键代码如下:
var textarea = $('textarea[name="'+fieldname+'"]')[0]; // 插入自定义文本的快捷键 sceditor.instance(textarea).addShortcut('ctrl+alt+b', function() { var fieldname = this.opts.id; const editorInstance = parent.window['sce_'+fieldname]; // 插入目标公式文本 editorInstance.insertText('\\sqrt{}'); // 实现光标左移1位 const rangeHelper = editorInstance.getRangeHelper(); const currentRange = rangeHelper.selectedRange(); // 插入文本后光标默认在末尾,将起止位置都向前偏移1个字符,落在两个大括号中间 currentRange.setStart(currentRange.endContainer, currentRange.endOffset - 1); currentRange.setEnd(currentRange.endContainer, currentRange.endOffset - 1); // 应用新的光标选区 rangeHelper.selectRange(currentRange); return; });
核心逻辑说明
insertText方法执行后,光标默认会停在插入内容的最右侧,也就是\sqrt{}的}后面- 我们通过range对象拿到当前光标位置,将光标起止位置同步向前偏移1位,刚好落在
{和}的中间位置 - 最后调用
selectRange方法更新编辑器的光标位置即可生效
该方案同时兼容源码编辑模式和所见即所得编辑模式,不需要额外做适配。
内容的提问来源于stack exchange,提问作者Avatar
相关产品推荐
相关产品推荐

