You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SunEditor表情插件插入表情后光标位置保持方法求助

解决SunEditor表情插入后光标重置问题

在使用insertNode插入表情节点后,SunEditor不会自动将光标定位到新内容后方,导致光标跳转到文档开头。你可以通过手动调用编辑器的光标定位API来修复这个问题:

  1. 插入表情节点后,用editor.util.setCursorAfter()将光标移动到新插入的span元素后方
  2. 调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:15:54