最近在做一个后台管理系统,要求可以对前台用户的作品进行评论,而评论要可以输入表情,常规的文字输入框都是用的文本域 textarea 来做的,但这种输入框只能输入文字,没有办法输入表情图标,这个时候可编辑div就能起到作用了,那么如何在可编辑的div中插入表情呢?

要完成这个功能得用到 selection 以及 range,selection 对象由 window.getSelection() 方法获得,它代表页面中的文本选区,选区对应的区域,而range对象,可由selection对象的 getRangeAt() 方法获得,实现在光标处插入图片后将光标移到图片后边,就是使用这两个对象中的方法。

基本的实现步骤是这样的,首先获得 selection 选区对象,再获得范围对象 range,创建图片节点,将图片节点插入到范围中,接着将范围收缩为它末端的一个点,最后将选区清除,将收缩后的范围重新添加到选区中即可,以下是核心的代码实现。

function insertImg(src) {if ('getSelection' in window) {var sel = window.getSelection();// 有sel对象,并且用户已经点击过页面,且点击的选区起点和终点在同一位置if (sel && sel.rangeCount === 1 && sel.isCollapsed) {// 获取范围var range = sel.getRangeAt(0);var img = new Image();img.src = src;// 插入图片range.insertNode(img);// 将选区折叠为一个插入点,为了兼容IE添加一个参数range.collapse(false);// 移除选区sel.removeAllRanges();// 添加选区sel.addRange(range);}} else if ('selection' in document) {// content为可编辑div的IDvar div = document.getElementById('content');// 获得焦点div.focus();// 创建范围对象var range = document.selection.createRange();// 插入图片range.pasteHTML('<img src="' + src + '">');// 如果要插入文本,请用range.text="XXXX"div.focus();}
}

在评论输入框中插入表情相关推荐

  1. 如何在富文本中插入表情,word文档,及数学公式?

    前言 互联网寒冬一直在持续,不知道大家过的还好吗?不过话说回来,技术过硬,你在哪里都是最靓的仔.今天就给大家补充一点弹药,如何在富文本中插入表情,word文档,及数学公式. 为什么是 TinyMCE ...

  2. Android:TextView与EditText中插入表情图片

    表情工具类,用于在TextView与EditText中插入表情图片: public class FaceUtil {public int[] faceIds;public String[] faceC ...

  3. 微信小程序,数据库中插入表情

    微信小程序,数据库中插入表情 错误提示 使用的是django做的后台 错误提示 django.db.utils.InternalError: (1366, "Incorrect string ...

  4. 输入框中-------禁止输入表情

    最近遇到了一个需求,就是在设置账号名称中禁止输入表情,就把该知识点整理了一下,记录以便下次查找. 可能还有不完善之处,请各位补充. 方法1:此方法个别表情识别不出来   比如我的华为手机 电话表情 不 ...

  5. 【小松教你手游开发】【系统模块开发】图文混排 (在label中插入表情)

    本身ngui是自带图文混排的,这个可以在ngui的Example里找到.但是为什么不能用网上已经说得很清楚,比如雨松momo的http://www.xuanyusong.com/archives/29 ...

  6. 文本域和输入框中的表情(emoji)处理

    // 文本中的emoji表情处理 $(document).ready(function(){//$("textarea,input").on("keyup",f ...

  7. 在“Markdown”中插入表情包教程

    让我们的文章变得有趣起来吧

  8. NGUI聊天信息中插入动态表情

    聊天系统中难免需要加入动态表情来增加表现力,而使用NGUI中自带的表情系统有些局限:一是只能使用静态表情,二是需要制作字体图集,不能使用动态图集.所以需要另外寻找方法实现聊天文字中插入动态表情的效果. ...

  9. 输入框插入表情的实现

    输入框插入表情的实现 HTML5 在普通的 textarea 中,只能显示普通的文本.如果简单的输入文本,textarea 便足以胜任.但是实际情况往往要复杂得多. 简单版本的插入表情 常见的版本一般 ...

最新文章

  1. centos php svn,centos7中搭建svn服务器(示例代码)
  2. linux虚拟用户的配置
  3. malloc 和 calloc的区别?
  4. server长时间运行query,Ajax刷新被block
  5. 网易2019实习生Java编程题
  6. mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法
  7. 从1亿个ip中找出访问次数最多的IP
  8. jquery学习之事件委派
  9. ckplayer超酷网页播放器
  10. chart的简单使用
  11. 2022北京养老展(中国国际老年产业博览会)
  12. xxe漏洞浅谈以及复现
  13. POJ1163 The Triangle
  14. bim计算机工程师考试,bim工程师考试报名条件是什么?bim工程师考试怎么报名?...
  15. 【vue自定义指令】
  16. GTSAM在windows下安装,配置,简单调试
  17. tsmc 7nm工艺下用做syncCell的stdCell介绍
  18. 软件测试过程中背锅了:出现问题后,研发怀疑当初测试不到位
  19. 微软New Bing初体验:AI时代的搜索引擎(内含体验方法)
  20. 项目经理对项目各阶段需求的把控力度

热门文章

  1. 第一期“重庆市市政设计研究院有限公司BIM技术应用专项培训营”活动圆满举行
  2. 计算机审计上机试题,《计算机审计》上机实验报告.doc
  3. 机器学习(十一):FP-Tree算法
  4. vasp计算压电系数_压电系数计算频繁出错
  5. 互联网经济下软件众包平台会成为新流行吗
  6. 用了超融合,数据安全这事就放心吧!
  7. 如何安装M30A1激光物位仪
  8. 使用bat脚本如何清除文本中的空行
  9. MATLAB | 绘图复刻(九) | 泰勒图及组合泰勒图
  10. EMNLP 2017 accepted papers