SunEditor表情插件插入表情后光标位置保持方法求助
解决SunEditor表情插入后光标重置问题
在使用insertNode插入表情节点后,SunEditor不会自动将光标定位到新内容后方,导致光标跳转到文档开头。你可以通过手动调用编辑器的光标定位API来修复这个问题:
- 插入表情节点后,用
editor.util.setCursorAfter()将光标移动到新插入的span元素后方 - 调用
core.setFocus()确保编辑器重新获得焦点,避免光标丢失
修改后的代码如下:
action: function (core) { const editor = this; function handleEmoji(emoji) { const tag = editor.util.createElement("span"); tag.textContent = emoji; editor.insertNode(tag, null); // 将光标定位到表情后方 editor.util.setCursorAfter(tag); // 确保编辑器重新获得焦点 core.setFocus(); picker.off('emoji', handleEmoji); }; picker.on('emoji', handleEmoji); picker.togglePicker(document.querySelector('#emojianchor')); }
原理说明:
editor.util.setCursorAfter(element)是SunEditor内置工具方法,专门用于将光标设置在指定DOM元素的后方core.setFocus()会让编辑器重新获得焦点,避免因表情选择器的交互操作导致光标转移到其他区域
内容的提问来源于stack exchange,提问作者J R RuttyJ
相关产品推荐
相关产品推荐

