vue项目中在可编辑div光标位置插入内容的实现代码


Posted in Javascript onJanuary 07, 2020

vue项目中在可编辑div光标位置插入内容

html:

<div class="mouse-move fl f12 h22 lh22 mg-r5 sms-item"
   @dragstart="dragStart($event, item.labelName)"
   draggable='true'
 v-for="(item, index) in modelCommonList"
   :key="index"
   @click="dropRelease($event, item.labelName)">
   {{item.labelName}}
 </div>
<div contenteditable="true"
   @drop="dropRelease($event)"
   @dragover="allowDrop($event)"
   ref="smsContent"
   class="border-r4 f12 h100 pd-tb10 pd-lr10 overflow-scroll-y editable-div"
   id="smsContent">
</div>

methods:

insertHtmlAtCaret(html) {
    let sel, range;
    if (window.getSelection) {
      // IE9 and non-IE
      sel = window.getSelection();
      if (sel.getRangeAt && sel.rangeCount) {
        range = sel.getRangeAt(0);
        range.deleteContents();
        let el = document.createElement("div");
  el.appendChild(html)
        var frag = document.createDocumentFragment(), node, lastNode;
        while ((node = el.firstChild)) {
          lastNode = frag.appendChild(node);
        }
        range.insertNode(frag);
        if (lastNode) {
          range = range.cloneRange();
          range.setStartAfter(lastNode);
          range.collapse(true);
          sel.removeAllRanges();
          sel.addRange(range);
        }
      }
    } else if (document.selection && document.selection.type != "Control") {
      // IE < 9
      document.selection.createRange().pasteHTML(html);
    }
  },
 //开始拖动可选字段
  dragStart(event, name) {
    event = event || window.event;
    this.dragging = name; //str
    event.dataTransfer.setData(" ", " "); //for firefox
  },
  //阻止默认事件
  allowDrop(event) {
    let e = event || window.event;
    if (e && e.preventDefault) {
      e.preventDefault();
    } else {
      window.event.returnValue = false;
    }
  },
  //拖动到指定位置并释放
  dropRelease(event, nodeValueName) {
    event = event || window.event;
    event.preventDefault();
    let textNode = document.createElement('input');
    textNode.className = 'mg-lr5 enabledTag';
    textNode.type = 'button';
    textNode.value = this.dragging || nodeValueName;
    this.insertHtmlAtCaret(textNode);
    this.dragging = '';
  },

总结

以上所述是小编给大家介绍的vue项目中在可编辑div光标位置插入内容的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
jQuery滚动加载图片效果的实现
Mar 06 Javascript
JS 实现Json查询的方法实例
Apr 12 Javascript
百度地图api如何使用
Aug 03 Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 Javascript
解决Layui 表单提交数据为空的问题
Aug 15 Javascript
element ui table(表格)实现点击一行展开功能
Dec 04 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
JavaScript获取某一天所在的星期
Sep 05 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
Feb 24 Javascript
vue项目接口域名动态获取操作
Aug 13 Javascript
前端性能优化建议
Sep 17 Javascript
electron+vue实现div contenteditable截图功能
Jan 07 #Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 #Javascript
Vue程序化的事件监听器(实例方案详解)
Jan 07 #Javascript
微信小程序服务器日期格式化问题
Jan 07 #Javascript
webpack 最佳配置指北(推荐)
Jan 07 #Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 #Javascript
vue实现数据控制视图的原理解析
Jan 07 #Javascript
You might like
php代码优化及php相关问题总结
2006/10/09 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
Js四则运算函数代码
2012/07/21 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
JS的数组迭代方法
2015/02/05 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Ubuntu下安装PyV8
2016/03/13 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
四下基层实施方案
2014/03/28 职场文书
小学一年级学生评语
2014/04/22 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
公证书格式
2015/01/23 职场文书
悬空寺导游词
2015/02/05 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers