Konvertieren Sie HTML-Code in contentEditable in einfachen Text

Ich habe eincontentEditable und ich entferne die Formatierung des eingefügten Inhaltson('paste') durch die Veranstaltung zu fangen. Dann fokussiere ich einen Textbereich, füge den Inhalt dort ein und kopiere den Wert. Ziemlich genau die Antwort vonHier. Das Problem ist, dass ich das nicht kann:

$("#paste-output").text($("#area").val());

denn das würde meinen gesamten Inhalt durch den eingefügten Text ersetzen. Also muss ich den Inhalt an der Position des Einfügemarke einfügen. Ich habe ein Skript zusammengestellt, das das macht:

pasteHtmlAtCaret($("#area").val());

// pastes CTRL+V content at caret position
function pasteHtmlAtCaret(html) {
  var sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      var el = document.createElement("div");
      el.innerHTML = html;
      var frag = document.createDocumentFragment(), node, lastNode;
      while ((node = el.firstChild)) {
        lastNode = frag.appendChild(node);
      }
      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") {
    document.selection.createRange().pasteHTML(html);
  }
}

Das einzige Problem ist, dass HTML-Inhalte an der Cursorposition mit dem Befehl eingefügt werdenhtml Variable. Wie kann ich das in einfachen Text umwandeln? Ich habe versucht, die jQuery hinzuzufügen.text(html) ohne Glück variieren. So etwas könnte helfen:

el.textContent||el.innerText;

Irgendwelche Ideen oder eine bessere Lösung? Vielen Dank!

BEARBEITEN: Dank der folgenden Antworten habe ich meinen Code geändert und das Problem behoben. Ich habe im Grunde den Wert von kopierttextarea in eindiv und packte nur seine.text():

// on paste, strip clipboard from HTML tags if any
$('#post_title, #post_content').on("paste", function() {
    var text = $('<div>').html($("#area").val()).text();
    pasteHtmlAtCaret(text);
  }, 20);
});

Antworten auf die Frage(4)

Ihre Antwort auf die Frage