Чтобы получить начальную позицию выделения из редактируемого содержимого элемента в JavaScript, вы можете использовать различные методы. Вот несколько подходов:
-
Использование объекта Selection:
function getSelectionStart(element) { var start = 0; if (window.getSelection) { var selection = window.getSelection(); if (selection.rangeCount > 0) { var range = selection.getRangeAt(0); var preCaretRange = range.cloneRange(); preCaretRange.selectNodeContents(element); preCaretRange.setEnd(range.startContainer, range.startOffset); start = preCaretRange.toString().length; } } else if (document.selection && document.selection.type !== 'Control') { var textRange = document.selection.createRange(); var preCaretTextRange = document.body.createTextRange(); preCaretTextRange.moveToElementText(element); preCaretTextRange.setEndPoint('EndToStart', textRange); start = preCaretTextRange.text.length; } return start; } -
Использование объекта диапазона:
function getSelectionStart(element) { var range = window.getSelection().getRangeAt(0); var preCaretRange = range.cloneRange(); preCaretRange.selectNodeContents(element); preCaretRange.setEnd(range.startContainer, range.startOffset); return preCaretRange.toString().length; } -
Использование объекта TextRange (для более старых версий Internet Explorer):
function getSelectionStart(element) { var textRange = document.selection.createRange(); var preCaretTextRange = document.body.createTextRange(); preCaretTextRange.moveToElementText(element); preCaretTextRange.setEndPoint('EndToStart', textRange); return preCaretTextRange.text.length; }
Эти методы позволяют получить начальную позицию выделения внутри редактируемого элемента в JavaScript.