Можете ли вы установить и / или изменить выбор текста пользователя в JavaScript? - PullRequest
23 голосов
/ 15 ноября 2010

В JavaScript существуют различные методы для доступа к выделенному тексту пользователя и создания выделенных текстов (или диапазонов) - см. http://www.quirksmode.org/dom/range_intro.html.

На этой странице вы можете программно создать диапазон и получить доступ к тексту внутри него. Но это не меняет выбор текста пользователем и не заставляет пользователя выделять какой-либо текст, если он этого еще не сделал.

Можете ли вы установить и / или изменить выбор текста пользователя в JavaScript?

1 Ответ

37 голосов
/ 15 ноября 2010

Да.Во всех браузерах вы можете получить один или несколько Range s или TextRange по выбору пользователя, и оба Range и TextRange имеют методы для изменения содержимого диапазона.

UPDATE

Вы можете установить выбор пользователя, создав Range и добавив его к объекту Selection в большинстве браузеров, а также создав TextRange и вызвав его метод select() вIE <= 8. </p>

Например, чтобы установить выделение для охвата содержимого элемента:

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.Если вы можете более конкретно указать, как вы хотите изменить выбор, вам будет легче помочь.

...