Maison > interface Web > js tutoriel > le corps du texte

Comment insérer du HTML dans un DIV modifiable à la position Caret ?

Mary-Kate Olsen
Libérer: 2024-11-10 00:19:02
original
290 Les gens l'ont consulté

How to Insert HTML into a Contenteditable DIV at the Caret Position?

Insérer du HTML dans un DIV modifiable par le contenu à la position Caret

Défi :

Dans un div modifiable par le contenu, les événements de pression de touche capturent peut être utilisé pour empêcher la saisie de texte lorsque la touche Entrée est enfoncée. Avec le curseur dans le point d'insertion souhaité, nous recherchons une méthode pour insérer du HTML (par exemple, une balise
) sans l'afficher en texte brut.

Solution :

Bien que l'utilisation de Range.pasteHTML() fonctionne dans IE, d'autres navigateurs affichent la balise HTML sous forme de texte. La fonction suivante nous permet d'insérer du HTML dans tous les principaux navigateurs, en remplaçant le texte existant si elle est sélectionnée :

function pasteHtmlAtCaret(html) {
  var sel, range;
  if (window.getSelection) {
    // IE9 and non-IE
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();

      // Create a document fragment from the HTML string
      var el = document.createElement("div");
      el.innerHTML = html;
      var frag = document.createDocumentFragment();
      while ((node = el.firstChild)) {
        frag.appendChild(node);
      }

      range.insertNode(frag);

      // Preserve the selection after the inserted content
      if (frag.lastChild) {
        range = range.cloneRange();
        range.setStartAfter(frag.lastChild);
        range.collapse(true);
        sel.removeAllRanges();
        sel.addRange(range);
      }
    }
  } else if (document.selection && document.selection.type != "Control") {
    // IE < 9
    document.selection.createRange().pasteHTML(html);
  }
}
Copier après la connexion

Fonctionnalité améliorée (août 2013) :

En réponse à demandes des utilisateurs, un paramètre supplémentaire a été ajouté pour préciser si le contenu inséré doit être sélectionné ou non.

function pasteHtmlAtCaret(html, selectPastedContent) {
  // Similar functionality as the original function
  // ...
}
Copier après la connexion

Cette fonction mise à jour nous permet de contrôler le comportement de sélection après l'insertion du contenu HTML.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal