<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#box {
width: 100%;
height: 200px;
border: 1px red solid;
}
</style>
</head>
<body>
<div id="box" contenteditable="true"></div>
<button>插入指定内容</button>
<button>移动光标到最后</button>
</body>
</html>
<script>
function 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();
// Range.createContextualFragment() would be useful here but is
// non-standard and not supported in all browsers (IE9, for one)
let el = document.createElement("div");
el.innerHTML = html;
let frag = document.createDocumentFragment(), node, lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
// Preserve the selection
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);
}
}
var btn1 = document.getElementsByTagName('button')[0];
var btn2 = document.getElementsByTagName('button')[1];
btn1.onclick = function () {
insertHtmlAtCaret('这是在光标处插入的内容!')
}
btn2.onclick = function () {
// 将获得焦点的光标移动到最后的输入位置
let range = document.createRange();
range.selectNodeContents(document.getElementById('box'));
range.collapse(false);
let sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
</script>
div 编辑文字并动态插入图片
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言: 公司需要做一个日记本类型的APP,要求可插入图片,有行间距,调整字体大小,颜色等功能。 效果: 思路: 1...
- 实现效果:新闻列表标题,在标题最后一个字符加已读未读标签。 用富文本标签实现的,在富文本标签里面添加文本附件图片插...
- 历史故事 | 赵咨:孝慈闻名 谦逊致远 令人“望尘莫及 孝慈闻名 谦逊致远 令人“望尘莫及”的赵咨 赵咨是东汉汉...
- 如何删除“\U0000fffc”字符串? 问题:断点可见 \U0000fffc 或者 ,但无论你怎么替换字符串为...