起初 遇见一个 需求 是 要求 再输入框可以输入文本, 点击检测,调用接口,将特定的文字可以 加颜色 或者 下划线展示, 然后可以继续输入。 正常是用textarea, 但是textarea 不可以 v-html, 里面只能是文本, 不能包含标签。
所以发现该 属性-----contenteditable
<div contenteditable="true">这是一个可编辑段落。</div>
这样就可以实现 div 可以编辑, 如同textarea。 并且可以包含标签,进行样式修改 展示。
可用来实现富文本
一个简单但完整的富文本编辑器
<!doctype html>
<html>
<head>
<title>Rich Text Editor</title>
<script type="text/javascript">
var oDoc, sDefTxt;
function initDoc() {
oDoc = document.getElementById("textBox");
sDefTxt = oDoc.innerHTML;
if (document.compForm.switchMode.checked) {
setDocMode(true); }
}
function formatDoc(sCmd, sValue) {
if (validateMode()) {
document.execCommand(sCmd, false, sValue); oDoc.focus(); }
}
function validateMode() {
if (!document.compForm.switchMode.checked) {
return true ; }
alert("Uncheck \"Show HTML\".");
oDoc.focus();
return false;
}
function setDocMode(bToSource) {
var oContent;
if (bToSource) {
oContent = document.createTextNode(oDoc.innerHTML);
oDoc.innerHTML = "";
var oPre = document.createElement("pre");
oDoc.contentEditable = false;
oPre.id = "sourceText";
oPre.contentEditable = true;
oPre.appendChild(oContent);
oDoc.appendChild(oPre);
document.execCommand("defaultParagraphSeparator", false, "div");
} else {
if (document.all) {
oDoc.innerHTML = oDoc.innerText;
} else {
oContent = document.createRange();
oContent.selectNodeContents(oDoc.firstChild);
oDoc.innerHTML = oContent.toString();
}
oDoc.contentEditable = true;
}
oDoc.focus();
}
function printDoc() {
<