junebubble 2020-04-15 10:49 采纳率: 0%
浏览 295

关于UEditor编辑器插入uNode后光标问题

功能为在编辑器指定的位置插入自定义变量,变量显示被{}框住并显示为蓝色,我的代码编写如下

var textNode= new UE.uNode({
      type:'text',
            data:varKeyStr,
});
var spanNode= new UE.uNode({
            id:"varKey",
            type:'element',
            tagName:'span',
            attrs:{
                style:'color:blue;',
                id:nodeId
            }
});
spanNode.appendChild(textNode);
modelView.focus();
modelView.execCommand('inserthtml',spanNode.toHtml());

其前台显示效果为

图片说明

但是当鼠标点击在{bxr}周围进行输入时,会将输入值填写到textNode中

图片说明

图片说明

希望效果为

图片说明

希望各位大神指教

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 23:08
    关注

    参考GPT和自己的思路:

    你好,针对你的问题,我的回答如下:

    首先,根据你的代码,可以看出在执行inserthtml命令时,是将整个spanNode插入编辑器中的,而不是只插入textNode。因此,当你在{bxr}周围进行输入时,输入的内容自然会被填写到textNode中。

    为了解决这个问题,你可以尝试将textNode和spanNode分别插入编辑器,具体的做法如下:

    1. var textNode= new UE.uNode({
    2. type:'text',
    3. data:varKeyStr,
    4. });
    5. var spanNode= new UE.uNode({
    6. id:"varKey",
    7. type:'element',
    8. tagName:'span',
    9. attrs:{
    10. style:'color:blue;',
    11. id:nodeId
    12. }
    13. });
    14. spanNode.appendChild(textNode);
    15. modelView.focus();
    16. var range = modelView.selection.getRange();
    17. range.selectNodeContents(textNode);
    18. modelView.selection.clearRange();
    19. modelView.selection.getRange().insertNode(spanNode);
    20. modelView.selection.getRange().setEndAfter(spanNode).collapse(true);
    21. modelView.selection.clearRange();
    22. modelView.selection.getRange().selectNodeContents(spanNode);
    23. modelView.selection.setCursor();
    

    这样,textNode和spanNode就会被分别插入编辑器,并且当你在{bxr}周围进行输入时,输入的内容就会被填写到spanNode中了。

    希望我的回答能够解决你的问题,如果还有其他问题,请随时提出,我会尽力回答。

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站