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 相关文章推荐
js 实现复制到粘贴板的功能代码
May 13 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
Oct 15 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
jquery选择器之基本过滤选择器详解
Jan 27 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
基于jQuery实现多层次的手风琴效果附源码
Sep 21 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
javascript实现简易聊天室
Jul 12 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 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 魔术函数使用说明
2010/05/14 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
jquery.pagination.js分页使用教程
2018/10/23 jQuery
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
Python if语句知识点用法总结
2018/06/10 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
对python函数签名的方法详解
2019/01/22 Python
详解python中init方法和随机数方法
2019/03/13 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
八年级英语教学计划
2015/01/23 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
生日宴会祝酒词
2015/08/10 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers