Используя js, возможно ли предотвратить расширение выделения текста при нажатии Shift в другом месте? - PullRequest
0 голосов
/ 05 июня 2018

Пожалуйста, не указывайте этот вопрос как дубликат.Я встречал похожие вопросы о stackoverflow, но они не отвечают моим конкретным потребностям.

У меня выделен какой-то текст и выделен на веб-странице, и я хотел бы иметь возможность сдвигать-клик в сторону отвыделенный текст, не расширяя выделение текста.

Я создал функцию, которая устанавливает переменную shiftkey в значение true при каждом нажатии клавиши Shift, и у меня есть другая функция, которая вызывается по щелчку мыши.Последняя функция проверяет, установлено ли значение клавиши shift для true, чтобы определить, есть ли у меня событие нажатия клавиши shift.Если это так, я подумал, e.preventDefault ();будет препятствовать расширению выделенного текста, но это не так!

Использование

document.getElementsByTagName("body").style.userSelect = "none";

с последующим

window.getSelection().toString();

и, наконец,

document.getElementsByTagName("body").style.userSelect = "auto";

тоже не работает!

Есть идеи, как это можно сделать?

1 Ответ

0 голосов
/ 06 июня 2018

Я нашел решение своей проблемы, прочитав эту страницу об объекте и эту страницу об объекте диапазона .

Мне пришлось назначить оригиналвыделение диапазона и сохранение его в переменной.

var sel = window.getSelection();
var range = sel.getRangeAt(0);

Затем, после нажатия Shift, выделение будет расширено, поэтому мне придется очистить выделение с помощью:

sel.empty();

или

sel.removeAllRanges();

После этого я могу добавить исходный сохраненный диапазон к пустому выделению, используя:

sel.addRange(range);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...