Я знаю, що йому рік, але ця публікація є найкращим результатом пошуку з багатьох питань щодо пошуку позиції Каре, і я знайшов це корисним.
Я намагався використати чудовий сценарій Тіма вище, щоб знайти нову позицію курсора після перетягування елемента з однієї позиції на іншу у div, який можна редагувати. Це чудово працювало в 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;
}
}