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; }
Dieser Code funktioniert unter den folgenden Annahmen:
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!