既知の親要素からユーザー選択の開始位置と終了位置を計算する方法を探しています。私は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では動作しません。理想的には、要素テストの最初からオフセットを取得できるようにしたいと考えています。ここではいくつかの良いリソースがあるものの
JavaScriptの範囲
[jsfiddle](http://jsfiddle.net/)デモでは、良い回答を得るチャンスが大幅に向上します。 – c69
[Rangy](http://code.google.com/p/rangy/)をご覧ください。現在のコードをきめ細かく翻訳できるかもしれません。 – Hemlock