Bilinen bir ana öğeden bir kullanıcı seçiminin başlangıç ve bitiş konumunu hesaplamanın bir yolunu arıyorum. Ben FF için çalışmak başardı bazı hafif bir değişiklik ile this karşı geldi, ama IE içinde bunu yapmak emin değilim ve benim modifikasyon uygun ise bazı düşünceler almak isterim. Orijinal cevap için Tim Down'a teşekkürler.Bir üst öğeden javascript kullanarak kullanıcı seçiminin başlangıç ve bitiş konumunu hesaplayın
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
};
}
Bunun bir süre oldu ama burada fikir gösteren bir JSFiddle olduğunu biliyorum. Yine FF ve Chrome'da çalışıyor ancak IE9 değil. İdeal olarak, eleman testinin başlangıcından ofset elde etmek istiyorum. Bazı iyi kaynaklardır burada olsa
azaltılmış [jsfiddle] (http://jsfiddle.net/) demo, iyi bir yanıt alma şansınızı büyük ölçüde artıracaktır. – c69
[Rangy] 'ye bakın (http://code.google.com/p/rangy/). Mevcut kodunuzu oldukça yakın bir şekilde çevirebilirsiniz. – Hemlock