Я ищу способ вычисления начального и конечного положения выбора пользователей из известного родительского элемента. Я наткнулся на this с некоторыми небольшими изменениями. Мне удалось работать с FF, но я не уверен, как это сделать в IE, и я хотел бы получить некоторые мысли, если моя модификация подходит. Большое спасибо Тиму Дауну за оригинальный ответ.Рассчитать начальную и конечную позицию выбора пользователя с помощью javascript из родительского элемента
function getBodyTextOffset(node, offset) {
var sel = window.getSelection();
var range = document.createRange();
range.selectNodeContents(document.getElementById('test'));
range.setEnd(node, offset);
sel.removeAllRanges();
sel.addRange(range);
return sel.toString().length;
}
function getSelectionOffsets() {
var sel, range;
var start = 0, end = 0;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(sel.rangeCount - 1);
start = getBodyTextOffset(range.startContainer, range.startOffset);
end = getBodyTextOffset(range.endContainer, range.endOffset);
sel.removeAllRanges();
sel.addRange(range);
alert(start + ", " + end);
}
} else if (document.selection) {
// IE stuff here
}
return {
start: start,
end: end
};
}
Я знаю, что это было время, но вот JSFiddle показывает идею. Опять же, он работает в FF и Chrome, но не в IE9. В идеале я хотел бы получить смещение от начала теста элемента.
reduced [jsfiddle] (http://jsfiddle.net/) демо значительно улучшит ваши шансы получить хороший ответ. – c69
Посмотрите на [Rangy] (http://code.google.com/p/rangy/). Возможно, вы сможете довольно точно перевести свой текущий код. – Hemlock