Maison > interface Web > js tutoriel > Comment insérer du HTML au niveau du curseur dans un Div ContentEditable ?

Comment insérer du HTML au niveau du curseur dans un Div ContentEditable ?

Linda Hamilton
Libérer: 2024-11-11 07:38:03
original
614 Les gens l'ont consulté

How to Insert HTML at the Caret in a ContentEditable Div?

Insérer du HTML dans Caret dans un div contenteditable

Dans les divs contenteditable, la capture des frappes sur les touches vous permet d'empêcher l'insertion de caractères indésirables. Cela soulève la nécessité d'insérer directement des éléments HTML, tels qu'une balise
. Bien que la solution fournie pour l'insertion de texte dans un div contenteditable fonctionne dans IE en utilisant la méthode range.pasteHTML, elle restitue la balise
sous forme de texte brut dans d'autres navigateurs.

Insérer du HTML à l'aide de insertNode()

Dans la plupart des navigateurs, vous pouvez utiliser la méthode insertNode() de la Range obtenue à partir de la sélection pour insérer des nœuds HTML. Les versions d'IE inférieures à 9 prennent toujours en charge pasteHTML().

Fonction d'insertion de HTML

La fonction suivante peut être utilisée pour insérer du HTML au niveau du curseur dans tous les principaux navigateurs :

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);
  }
}
Copier après la connexion

Mise à jour : sélection du contenu inséré

Pour les scénarios dans lesquels vous souhaitez sélectionner le contenu inséré après l'insertion, la fonction peut être mise à jour avec un paramètre supplémentaire comme illustré ci-dessous :

function pasteHtmlAtCaret(html, selectPastedContent) {
  // Implementation with logic for selecting the inserted content if selectPastedContent is true
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal