electron实现编辑区域 ctrl+enter键换行

本文介绍如何在内容编辑面板中使用Vue.js实现当用户按下Ctrl+Enter键时进行换行的功能。通过监听键盘事件并自定义lineFeed函数来更新编辑区域的内容,并保持光标位置不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想要在enter 发送内容的情况下,客户按ctrl+enter实现换行

		<div
          class="edit-panel"
          contenteditable="true"
          @keyup.ctrl.enter="lineFeed"
          ref="editor"
        ></div>

对应的lineFeed()函数

lineFeed(){
      if(this.sendHotKey === "Enter"){
        var el = this.$refs.editor;
         var range = document.createRange();
        //返回用户当前的选区
        var sel =  document.getSelection();
        //获取当前光标位置
        var offset = sel.focusOffset;
        // 正常文本补充换行
        if (!this.$refs.editor.innerHTML.endsWith('\n')) {
          this.$refs.editor.innerHTML  += '\r\n';
        }
        // 新增一个换行
        this.$refs.editor.innerHTML  += '\r\n';
        // 重置光标到结尾
        range.setStart(el.childNodes[0], offset+1);
        //使得选区(光标)开始与结束位置重叠
        range.collapse(true);
        //移除现有其他的选区
        sel.removeAllRanges();
        //加入光标的选区
        sel.addRange(range);
      }
    },

方法二

lineFeed(){
      if(this.sendHotKey === "Enter"){
        var el = this.$refs.editor;
         var range = document.createRange();
        //返回用户当前的选区
        var sel =  document.getSelection();
        //获取当前光标位置
        var offset = sel.focusOffset;
        // 正常文本补充换行
        if (!this.$refs.editor.innerHTML.endsWith('\n')) {
          this.$refs.editor.innerHTML  += '\r\n';
        }
        // 新增一个换行
        this.$refs.editor.innerHTML  += '\r\n';
        // 重置光标到结尾
        range.setStart(el.childNodes[0], offset+1);
        //使得选区(光标)开始与结束位置重叠
        range.collapse(true);
        //移除现有其他的选区
        sel.removeAllRanges();
        //加入光标的选区
        sel.addRange(range);
      }
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值