Convertir HTML en texte brut dans contentEditable

J'ai un contentEditable et je bande la mise en forme de contenu collé on('paste') par la capture de l'événement. Alors je me concentre un textarea, collez le contenu dans y, et copier la valeur. À peu près la réponse de ici. Le problème est que je ne peux pas faire ça:

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

parce que ce serait de remplacer la totalité de mon contenu avec le texte collé. J'ai donc besoin de coller le contenu à la position du curseur. J'ai mis en place un script qui fait:

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);
  }
}

Le seul problème, c'est qu'il colle le contenu HTML, à la position du curseur à l'aide de la html variable. Comment puis-je transformer en texte brut? J'ai essayé d'ajouter le jQuery .text(html) de variable, mais sans succès. Quelque chose comme ce qui pourrait aider:

el.textContent||el.innerText;

Des idées ou une meilleure solution? Merci!


EDIT:
Merci pour les réponses ci-dessous j'ai modifié mon code et le problème est réglé. En gros, j'ai copié la valeur de textarea dans un div et attrapa seulement son .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);
});
Pourriez-vous svp poster votre solution (à partir de la modifier au bas de votre post) comme réponse? est une réponse et la solution, si elle rend plus facile pour les lecteurs plus j'ai l'intention de upvote.
fait.
Cette solution de travail si vous avez une gamme sélectionnée? AKA pas juste en l'insérant à la fois lieu, mais au lieu de le remplacer à la région sélectionnée?

OriginalL'auteur Alex | 2013-02-28