我使用Tim(rangy库)的函数(最后)来获取段落的开始和结束偏移量,问题是它只将TOTAL字符作为结尾
示例:
<p id="p1">testing 1</p>
<p id="p2">testing 2</p>
<p id="p3">testing 3</p>
选择测试(从p1开始),它正确返回0,4(开始,结束)
如果我从p2中选择testing 1
和testing
并使用:
getSelectionCharacterOffsetWithin(#p1); //0,16
getSelectionCharacterOffsetWithin(#p2); //0,16
如何设置它以捕获给定元素的结束偏移量?有没有办法做到这一点?
我知道它的设置以这个函数结束:end = preCaretRange.toString().length;
作为选定的文本大小,但是如何限制给定的元素?
以下功能:
function getSelectionCharacterOffsetWithin(element) {
start = 0;
end = 0;
doc = element.ownerDocument || element.document;
win = doc.defaultView || doc.parentWindow;
if (typeof win.getSelection != "undefined") {
sel = win.getSelection();
if (sel.rangeCount > 0) {
range = win.getSelection().getRangeAt(0);
preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.startContainer, range.startOffset);
start = preCaretRange.toString().length;
preCaretRange.setEnd(range.endContainer, range.endOffset);
end = preCaretRange.toString().length;
}
}
return { start: start, end: end };