Я знаю, что это год, но этот пост является лучшим результатом поиска для множества вопросов по поиску позиции в карете, и я нашел это полезным.
Я пытался использовать превосходный сценарий Тима вышенайти новую позицию курсора после перетаскивания элемента из одной позиции в другую в редактируемом элементе содержимого.Он отлично работал в FF и IE, но в Chrome действие перетаскивания выделило весь контент между началом и концом перетаскивания, в результате чего возвращаемый caretOffset
был слишком большим или маленьким (по длине выделенной области).
Я добавил несколько строк в первый оператор if, чтобы проверить, был ли выбран текст, и соответствующим образом скорректировать результат.Новое заявление ниже.Простите, если неуместно добавлять это здесь, поскольку это не то, что пытался сделать ОП, но, как я уже сказал, несколько поисков информации, связанной с позицией Карет, привели меня к этому посту, так что (надеюсь), вероятно, поможет кому-то еще.
Первый оператор Тима if с добавленными строками (*):
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var selected = range.toString().length; // *
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
if(selected){ // *
caretOffset = preCaretRange.toString().length - selected; // *
} else { // *
caretOffset = preCaretRange.toString().length;
} // *
}