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

Comment placer le curseur à la fin du texte dans un élément modifiable dans les navigateurs ?

Barbara Streisand
Libérer: 2024-11-19 14:26:02
original
207 Les gens l'ont consulté

How to Place the Caret at the End of Text in a Contenteditable Element Across Browsers?

Définition de la position du curseur à la fin du texte dans plusieurs navigateurs

Introduction

L'insertion de nouvelles lignes et la définition de la position du curseur à la fin du texte peuvent varier selon les navigateurs . Cet article explore une solution multi-navigateurs pour définir le curseur à la fin du texte lorsqu'un bouton est cliqué.

Problème

Dans divers navigateurs comme Chrome, Firefox et IE, la façon dont le texte est stocké et affiché dans un contenu modifiable l’élément diffère. Cela peut entraîner des sauts de ligne ou un formatage indésirables.

De plus, la définition de la position du curseur à la fin du texte après un clic sur un bouton nécessite une approche cohérente dans tous les navigateurs.

Solution

La fonction JavaScript suivante fournit une solution multi-navigateurs pour placer le curseur à la fin du text:

function placeCaretAtEnd(el) {
  el.focus();
  if (typeof window.getSelection != "undefined"
      && typeof document.createRange != "undefined") {
    var range = document.createRange();
    range.selectNodeContents(el);
    range.collapse(false);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
  } else if (typeof document.body.createTextRange != "undefined") {
    var textRange = document.body.createTextRange();
    textRange.moveToElementText(el);
    textRange.collapse(false);
    textRange.select();
  }
}
Copier après la connexion

La fonction prend une référence à l'élément contenteditable (el) en entrée. Il vérifie les méthodes getSelection et createRange présentes dans les navigateurs modernes. Si disponible, elle crée une plage, sélectionne tout le contenu de l'élément, réduit la plage jusqu'à la fin et définit la sélection.

Pour les navigateurs existants qui ne disposent pas de ces méthodes, la fonction utilise la méthode createTextRange pour obtenir le même effet.

Pour utiliser cette fonction, elle doit être appelée lorsque l'on clique sur le bouton, comme ceci :

$(document).ready(function() {
  $('#insert_caret').click(function() {
    var ele = $('#content');
    placeCaretAtEnd(ele);
  });
});
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!

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