1、每天学习一点点之 contenteditable 属性

起初 遇见一个 需求 是 要求 再输入框可以输入文本, 点击检测,调用接口,将特定的文字可以 加颜色 或者 下划线展示, 然后可以继续输入。 正常是用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() {
   
  <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值