我正在尋找一種方法來計算從已知父元素中選擇用戶的開始和結束位置。我遇到了this稍作修改我能夠爲FF工作,但我不知道如何在IE中做到這一點,如果我的修改是合適的,我很想得到一些想法。非常感謝Tim Down的原始答覆。使用來自父元素的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。理想情況下,我希望能夠從元素測試的開始獲得偏移量。
減少[jsfiddle](http://jsfiddle.net/)演示將大大提高您獲得良好答案的機會。 – c69
看看[Rangy](http://code.google.com/p/rangy/)。您可能能夠非常密切地翻譯您當前的代碼。 – Hemlock