Heim > Web-Frontend > js-Tutorial > Wie kann ich den Anfangs- und Endzeichenversatz einer Benutzerauswahl innerhalb des übergeordneten HTML-Elements bestimmen?

Wie kann ich den Anfangs- und Endzeichenversatz einer Benutzerauswahl innerhalb des übergeordneten HTML-Elements bestimmen?

Susan Sarandon
Freigeben: 2024-11-18 02:44:02
Original
423 Leute haben es durchsucht

How Can I Determine the Start and End Character Offsets of a User Selection Within Its Parent HTML Element?

Bestimmen der Start- und Endoffsets eines Bereichs innerhalb seines übergeordneten Containers

Problem

Wie kann man bei einem gegebenen HTML-Element die Zeichenoffsets bestimmen? innerhalb des übergeordneten Containers, wo ein Bereich (Benutzerauswahl) beginnt und endet, auch wenn die Auswahl HTML umfasst Tags?

Lösung

Aktualisierte Antwort:

So erhalten Sie sowohl Start- als auch Endoffsets:

function getSelectionCharacterOffsetWithin(element) {
  // Determine start and end offsets
  var start = 0;
  var end = 0;
  // Create ranges
  var range = getRangeAt(0);
  var preCaretRange = range.cloneRange();

  // Set start offset
  preCaretRange.selectNodeContents(element);
  preCaretRange.setEnd(range.startContainer, range.startOffset);
  start = preCaretRange.toString().length;

  // Set end offset
  preCaretRange.setEnd(range.endContainer, range.endOffset);
  end = preCaretRange.toString().length;

  // Return the object
  return { start: start, end: end };
}
Nach dem Login kopieren

Ursprüngliche Antwort:

Der bereitgestellte Code verwendet getSelection() und getRangeAt(0), um die Auswahl abrufen. Anschließend berechnet es den Versatz der Caret-Position innerhalb des Elements mithilfe der toString()-Methode für den Bereich. Dieser Ansatz liefert nur den Endversatz oder die Caret-Position.

Beispiel:

function getRangeCharacterOffsetWithin(element) {
  var range, sel;
  if ((sel = window.getSelection())) {
    range = sel.getRangeAt(0);
    range.collapse(false);
    prevRange = range.cloneRange();
    prevRange.selectNodeContents(element);
    prevRange.setEnd(range.endContainer, range.endOffset);
    return prevRange.toString().length;
  }
  return 0;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich den Anfangs- und Endzeichenversatz einer Benutzerauswahl innerhalb des übergeordneten HTML-Elements bestimmen?. 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