Подтвердить что ты не робот

Выбор окна JavaScript

В JavaScript существует метод window.getSelection(), который позволяет мне получить текущий выбор, сделанный пользователем.

Есть ли соответствующая функция, что-то вроде window.setSelection(), что позволит мне установить или очистить текущий выбор?

4b9b3361

Ответ 1

Возможно, это сделает это:

window.selection.clear();

Версия кроссбрайзера:

if (window.getSelection) {
   if (window.getSelection().empty) {  // Chrome
     window.getSelection().empty();
   } else if (window.getSelection().removeAllRanges) {  // Firefox
     window.getSelection().removeAllRanges();
   }
} else if (document.selection) {  // IE?
  document.selection.empty();
}

Ответ 2

Удаление выбора во всех основных браузерах:

function clearSelection() {
    if (window.getSelection) {
        window.getSelection().removeAllRanges();
    } else if (document.selection) {
        document.selection.empty();
    }
}

Для выбора контента необходимо использовать DOM Range и Selection в большинстве браузеров и TextRange объекты в IE < 9. Вот простой пример кросс-браузера, который выбирает содержимое определенного элемента:

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

Ответ 3

В браузерах, поддерживающих "выбор" и "диапазон", вам нужно создать объект диапазона, а затем установить его начало/конец. Документация Mozilla для объекта "range" содержит много информации.

Chrome не поддерживает это, по крайней мере, не с этим API, и я уверен, что Safari тоже не работает.

edit — благодаря @Tim Down за то, что WebKit (Chrome и Safari) действительно поддерживает это, что означает, что у моей jsfiddle была опечатка или что-то в этом роде!