27

JavaScript では、ユーザーのテキスト選択にアクセスし、テキスト選択 (または範囲) を作成するためのさまざまな方法があります — http://www.quirksmode.org/dom/range_intro.htmlを参照してください。

そのページに従って、プログラムで範囲を作成し、その中のテキストにアクセスできます。ただし、これを行っても、ユーザーのテキスト選択は変更されません。また、ユーザーがまだテキストを選択していない場合は、テキストが選択されることもありません。

JavaScript でユーザーのテキスト選択を設定および/または変更できますか?

4

2 に答える 2

40

はい。すべてのブラウザで、ユーザーの選択から1 つまたは複数Rangeの s または aを取得できます。また、範囲の内容を変更するためのメソッドを両方とも持つことができます。TextRangeRangeTextRange

アップデート

ほとんどのブラウザーでは を作成しRangeてオブジェクトに追加し、IE <= 8 ではを作成してそのメソッドを呼び出すことで、ユーザーの選択を設定できます。SelectionTextRangeselect()

たとえば、要素のコンテンツを包含するように選択を設定するには、次のようにします。

function selectElementContents(el) {
    if (window.getSelection && document.createRange) {
        var sel = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(el);
        sel.removeAllRanges();
        sel.addRange(range);
    } else if (document.selection && document.body.createTextRange) {
        var textRange = document.body.createTextRange();
        textRange.moveToElementText(el);
        textRange.select();
    }
}

SelectionIE 以外のブラウザーでユーザーの選択を変更するために使用できるオブジェクトのメソッドもいくつかあります。選択をどのように変更したいかについてより具体的に説明できる場合は、支援が容易になります。

于 2010-11-15T10:28:40.977 に答える