【转】怎么给javascript + div编辑框光标位置插入表情文字等?
2017-12-21 20:59
537 查看
最近刚好碰到这个问题,虽然离提出问题已经过了半年了,本着前人栽树后人乘凉的精神,还是回答一下。
效果:
2.给表情图片添加click事件(我是把img表情放在li下的),div获取焦点,_insertimg()锁定编辑器中光标的位置,参数是img,也可以是文本。
参照的原文在这里,里面用不同的方法分别进行了实现:
js实现在光标的位置 添加内容
from:https://www.zhihu.com/question/39811839/answer/83947340
效果:
<div id="editor" contenteditable="true"></div>
2.给表情图片添加click事件(我是把img表情放在li下的),div获取焦点,_insertimg()锁定编辑器中光标的位置,参数是img,也可以是文本。
$("#Modal .emoji-list li").click(function(event) { var emoji = $(this).find("img").attr('src'); $("#editor").focus(); var source = '<img src="'+emoji+'">'; _insertimg(source); }); function _insertimg(str){ var selection= window.getSelection ? window.getSelection() : document.selection; var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0); if (!window.getSelection){ document.getElementById('editor').focus(); var selection= window.getSelection ? window.getSelection() : document.selection; var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0); range.pasteHTML(str); range.collapse(false); range.select(); } else{ document.getElementById('editor').focus(); range.collapse(false); var hasR = range.createContextualFragment(str); var hasR_lastChild = hasR.lastChild; while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") { var e = hasR_lastChild; hasR_lastChild = hasR_lastChild.previousSibling; hasR.removeChild(e) } range.insertNode(hasR); if (hasR_lastChild) { range.setEndAfter(hasR_lastChild); range.setStartAfter(hasR_lastChild) } selection.removeAllRanges(); selection.addRange(range) } }
参照的原文在这里,里面用不同的方法分别进行了实现:
js实现在光标的位置 添加内容
from:https://www.zhihu.com/question/39811839/answer/83947340
相关文章推荐
- JS在可编辑的div中的光标位置插入内容或表情
- javascript控制在光标位置插入文字适合表情的插入
- 在 可编辑的 Div 的 光标位置 插入 文字 或 HTML
- 在 可编辑的 Div 的 光标位置 插入 文字 或 HTML
- JS在可编辑的div中的光标位置插入内容或表情
- javascript控制在光标位置插入文字适合表情的插入
- JS在可编辑的div中的光标位置插入内容或表情
- 可编辑div在光标位置插入指定内容
- JS在可编辑的div中的光标位置插入内容的方法
- javascript实现在textarea光标位置插入文字并移动光标到文字末尾
- 在textView中的光标位置插入表情或者文字
- 可编辑的div中光标位置插入对应内容(img,字符串------)
- JS在可编辑的div中的光标位置插入内容的方法
- 可编辑的DIV(兼容IE8)以及插入内容到光标位置
- 可编辑DIV (contenteditable="true") 在鼠标光标处插入图片或者文字
- javascript控制在光标位置插入文字
- 获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
- ahjesus 获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome
- javascript在光标位置插入内容
- 在可编辑div中插入文字或图片解决思路与实现步骤