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 相关文章推荐
jQuery powerFloat万能浮动层下拉层插件使用介绍
Dec 27 Javascript
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
js数组的操作指南
Dec 28 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
Sep 11 Javascript
纯js代码制作的网页时钟特效【附实例】
Mar 30 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
Dec 14 Javascript
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
vue+element+Java实现批量删除功能
Apr 08 Javascript
Vue实现搜索结果高亮显示关键字
May 28 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 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
数字转英文
2006/12/06 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
php查看网页源代码的方法
2015/03/13 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python之pandas用法大全
2018/03/13 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
python aiohttp的使用详解
2019/06/20 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
文员个人的求职信范文
2013/09/26 职场文书
演讲稿开场白
2014/01/13 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
实用的简历自我评价
2014/03/06 职场文书
运动会广播稿200字
2015/08/19 职场文书
决心书格式范文
2015/09/23 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers