JavaScriptを使用して場所/アンカーオフセットと長さ/オフセットを送信してテキストを選択したいここに私のコードがあります
var node = document.getElementById("content");
var range = document.createRange();
range.setStart(node, 0);
range.setEnd(node, 4); // here 0 and 4 is my location and length for the selection
// if my string is "This is test string" in my case its must select "This"
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
しかし、問題はrange.setStartとrange.setEndにあり、期待どおりに機能しない
DOM RangeのsetStart()
およびsetEnd()
メソッドは適切に指定されているため、 the spec または [〜#〜 ] mdn [〜#〜] 。
要約すると、文字オフセットの観点から範囲境界を指定する場合は、要素ではなくテキストノードを処理する必要があります。要素に単一のテキストノードが含まれている場合、コードの最初の行を次のように変更すると機能します。
var node = document.getElementById("content").firstChild;
Jqueryの結果セットを選択しようとしている場合は、ここに良い解決策があります
var $newSelection = $('.someElements');
var selection = window.getSelection();
var range = document.createRange();
range.setStartBefore($newSelection.first()[0]);
range.setEndAfter($newSelection.last()[0]);
selection.removeAllRanges();
selection.addRange(range);