web-dev-qa-db-ja.com

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

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

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

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

23
Paul D. Waite

はい。すべてのブラウザで、ユーザーの選択から1つ以上のRangesまたはTextRangeを取得でき、RangeTextRangeの両方にの内容を変更するためのメソッドがあります。範囲。

[〜#〜]更新[〜#〜]

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

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

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();
    }
}

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

37
Tim Down