2

ユーザーが選択したテキスト ボックスを指定して、JS を使用して (単語または文字で) 選択範囲を拡張できるようにしたいと考えています。

一部のブラウザでは現在の選択範囲を取得するために使用できwindow.getSelection();(こちらを参照)、FireFox では IEがサポートselection.modify("extend", "forward", "word");する TextRange オブジェクトも使用できることを知っています。

選択範囲を検査し、その前後のテキストと比較する必要があるため、これは必須です (したがって、完了したら選択範囲をリセットします)。

私は IE9 (IE10 で解決できるかもしれませんが)、Chrome、および FF をサポートする必要があり、JQuery を持っていますが、サードパーティの JS ライブラリを使用できます。

この記事は興味深いですが、必要なものではありません: Webkit の選択範囲 (Safari/Chrome)

4

2 に答える 2

2

contenteditableテキストエリアには、ページ内または要素内の通常の選択用の API とは異なる独自の選択 API があります。それは非常に簡単です。テキストエリアには、テキストエリアの値内の選択の開始位置と終了位置をそれぞれ表す読み取り可能および書き込み可能なプロパティがありますselectionStartselectionEndIE <= 8 には、このための別の API がありましたが、IE 9 はそれをサポートしています。

に相当するものは得られませんがSelection.modify()、テキストエリアの値を操作するのは一般的に簡単であるため、とにかく必要ないかもしれません。

MDN: https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement

于 2013-10-03T15:14:06.303 に答える
1

次の方法でアクティブな選択を変更できます。

var selection = window.getSelection();
var range = selection.getRangeAt(0);
range.setStart(range.startContainer, 0); // set to the beginning
selection.setSingleRange(range);

範囲を変更しても UI は更新されません。範囲を設定する必要があります。

于 2013-10-03T11:30:34.530 に答える