<template>
<el-button @click.stop="pushTag()">插入的内容</el-button>
<div
:key="index"
ref="PreviewContent"
contenteditable="plaintext-only"
@click="changeIndex(index)"
class="content"
:class="activeIndex == index? 'active':''"
></div>
</template>
<script>
export default {
data(){},
methods:{
pushTag(type,nodeid){}{
this.insertHtmlAtCaret(`插入的内容`);
},
//光标插入核心方法
insertHtmlAtCaret(html) {
if (window.getSelection) {
var selection = getSelection();
var par = false;
var theChild = selection.anchorNode.parentNode;
//判断光标是否在输入框内
if (
selection.anchorNode.parentNode.className == "content active" ||
selection.anchorNode.className == "content active"
) {
var sel = window.getSelection();
var range = sel.getRangeAt(0);
// IE9 and non-IE
if (sel.getRangeAt && sel.rangeCount) {
var el = document.createElement("span");
var ed = document.createTextNode(" ");
var eds = document.createTextNode(" ");
el.innerHTML = html;
el.setAttribute("contenteditable", false);//插入的span标签不可编辑,根据需要
el.setAttribute("class", "inner");
var frag = document.createDocumentFragment(),
node,
lastNode;
node = el;
frag.appendChild(ed);
frag.appendChild(node);
lastNode = frag.appendChild(eds);
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);
}
var textContent = document.querySelector(".active").innerHTML;
}
},
}
};
</script>
//method方法
点击光标定到内容设置,点击上面的按钮会将按钮插入到光标定位的位置,也可以输入文字