Heim > Web-Frontend > js-Tutorial > Wie kann ich die Caret-Position in einem ContentEditable-Element ermitteln?

Wie kann ich die Caret-Position in einem ContentEditable-Element ermitteln?

Susan Sarandon
Freigeben: 2024-11-25 07:10:12
Original
278 Leute haben es durchsucht

How Can I Get the Caret Position in a ContentEditable Element?

Abrufen der Caret-Position in einem ContentEditable-Element

Im Gegensatz zu der Fülle an Lösungen zum Festlegen der Caret-Position innerhalb von ContentEditable-Elementen ist die Bestimmung ihrer Die aktuelle Situation hat sich für viele Entwickler als schwer fassbar erwiesen. Diese Frage befasst sich mit dieser spezifischen Wissenslücke.

Um die Caret-Position innerhalb eines bestimmten inhaltsbearbeitbaren Elements bei Benutzereingaben, wie z. B. Tastendrücken, zu ermitteln, kann man den folgenden Code verwenden:

function getCaretPosition(editableDiv) {
  var caretPos = 0,
    sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.rangeCount) {
      range = sel.getRangeAt(0);
      if (range.commonAncestorContainer.parentNode == editableDiv) {
        caretPos = range.endOffset;
      }
    }
  } else if (document.selection && document.selection.createRange) {
    range = document.selection.createRange();
    if (range.parentElement() == editableDiv) {
      var tempEl = document.createElement("span");
      editableDiv.insertBefore(tempEl, editableDiv.firstChild);
      var tempRange = range.duplicate();
      tempRange.moveToElementText(tempEl);
      tempRange.setEndPoint("EndToEnd", range);
      caretPos = tempRange.text.length;
    }
  }
  return caretPos;
}
Nach dem Login kopieren

Dieser Code funktioniert unter den folgenden Annahmen:

  • Das bearbeitbare Div enthält einen einzelnen Textknoten ohne zusätzliche Verschachtelung Elemente.
  • Die CSS-Leerraumeigenschaft für das bearbeitbare Div ist nicht auf „pre“ gesetzt.

Eine umfassendere Lösung, die komplexere Inhalte mit verschachtelten Elementen berücksichtigt, finden Sie unter zur folgenden Stack Overflow-Antwort: https://stackoverflow.com/a/4812022/96100

Das obige ist der detaillierte Inhalt vonWie kann ich die Caret-Position in einem ContentEditable-Element ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage