08.06.2015, 19:32
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
Выделять текст БЕЗ удерживания ЛКМ.
Текст:
Это нереально осуществить?
Задача:
Выделение текста двумя кликами (I - текстовый курсор):
1й делаем здесь: Это неIреально осуществить?
2й делаем здесь: Это нереальноI осуществить?
Будет выделено: реально
Другими словами, не нужно будет удерживать левую кнопку мыши, чтобы выделять текст.
Установил начальную метку выделения, конечную и готово.
Особенно будет удобно, если текста много.
Смотрел про Range, Selection (JavaScript) и нихрена (извиняюсь) не понял, как решить казалось бы простую задачу!
Может быть можно как-то программно удерживать левую кнопку мыши, типа mousepressed. Может ли JavaScript получить состояние кнопки мыши, а потом поддерживать его, мол 0 - кнопка не нажата, а 1 - нажата?
Помогите, пожалуйста, товарищи!
|
|
08.06.2015, 20:56
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 458
|
|
Teamur, а такое выделение на каждый второй клик раздражать не будет?
|
|
08.06.2015, 21:54
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
Нет )
Насколько я понял так называемая граничная точка выделения (boundary point) появляется лишь когда пользователь зажимает и отводит курсор. ( https://learn.javascript.ru/range-textrange-selection)
Длительное удерживание кнопки мыши нажатой напрягает мышцы, особенно если нужно выделить большой фрагмент текста. А тут 2 спокойных щелчка в начале и конце фрагмента и он выделен.
Данная фишка, так сказать, будет реализовываться в блоке в режиме contenteditable. Пользователь устанавливает текстовый курсор и как только он это сделает, скрипт должен включить выделение как если бы пользователь стал удерживать лкм.
Последний раз редактировалось Teamur, 08.06.2015 в 22:06.
|
|
08.06.2015, 22:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Teamur,
если не заморачиватся -- выделение текста только слева на право и без ie8
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<p id="content">Это <b>нереально</b> осуществить?</p>
<script>
var s = [], d = document.getElementById("content"), el;
function setSelect() {
var a = window.getSelection(),
c = a.anchorOffset;
if (s.length) {
var b = document.createRange();
b.setStart(el, s.shift());
b.setEnd(a.anchorNode, c);
a.removeAllRanges();
a.addRange(b)
} else {s.push(c); el = a.anchorNode}
};
d.onclick = setSelect
</script>
</body>
</html>
Последний раз редактировалось рони, 08.06.2015 в 22:32.
|
|
08.06.2015, 22:28
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
Отлично, но выделение какое-то не отзывчивое, как-то через раз.
А можно ли сделать так, чтобы скрипт сам "зажал" лкм как только курсор будет установлен? Спасибо.
Типа Mousedown fixed - двигаем курсор, а за ним всё выделяется - второй клик и готово )
Конечно, я понимаю на словах все просто, но в реальности (
Последний раз редактировалось Teamur, 08.06.2015 в 22:37.
|
|
08.06.2015, 22:40
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Teamur,
Сообщение от Teamur
|
как-то через раз.
|
значит был в начале правый клик
Сообщение от Teamur
|
А можно ли сделать так, чтобы скрипт сам "зажал" лкм как только курсор будет установлен?
|
рекомендую мульфильм - двое из ларца
и весь этот скрипт заменяет клавиша Shift -- вам трудно второй клик сделать с нажатым шифтом?
|
|
08.06.2015, 22:46
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
О точно, можно ведь имитировать нажатие шифта. )
Желание реализовать эту функцию в итоге привело к тому, что я зарегистрировался на этом сайте, так как запутался в десятках вкладок и потерялся в море информации, так и не нашел ничего подобного.
Последний раз редактировалось Teamur, 08.06.2015 в 22:50.
|
|
08.06.2015, 22:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от Teamur
|
имитировать нажатие шифта
|
когда вы это сотворите програмно -
Сообщение от Teamur
|
Range, Selection
|
будут для вас как семечки
|
|
08.06.2015, 22:57
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
Значит Javascript не такой могущественный как я считал ранее. Всего то нужно 2 клика. Может так: клик в блоке - выделяет всё, что в нем находится, но в стилях мы специально скроем фон выделения (100% прозрачность). Далее 2 кликами мы просто будем обрубать то, что находится снаружи.
|
|
08.06.2015, 22:59
|
Профессор
|
|
Регистрация: 08.06.2015
Сообщений: 206
|
|
Честно говоря, я без понятия как решить задачу. Я бы сразу добавил скрипт в избранное! ))
Двое из ларца: "И так сойдет! )))"
Не хотелось бы, чтобы это сообщение было последним в теме!
Последний раз редактировалось Teamur, 08.06.2015 в 23:05.
|
|
|
|