Can you set and/or change the user’s text selection in JavaScript?

Yes. In all browsers you can get one or more Ranges or a TextRange from the user’s selection, and both Range and TextRange have methods for changing the contents of the range.

UPDATE

You can set the user’s selection by creating a Range and adding it to the Selection object in most browsers and by creating a TextRange and calling its select() method in IE <= 8.

For example, to set the selection to encompass the contents of an element:

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

There are also several methods of the Selection object that can be used to change the user’s selection in non-IE browsers. If you can be more specific about how you want to change the selection then it will be easier to help.

Leave a Comment