Выбор окна JavaScript
В JavaScript существует метод window.getSelection()
, который позволяет мне получить текущий выбор, сделанный пользователем.
Есть ли соответствующая функция, что-то вроде window.setSelection()
, что позволит мне установить или очистить текущий выбор?
Ответы
Ответ 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 была опечатка или что-то в этом роде!