Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.06.2015, 19:32
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Выделять текст БЕЗ удерживания ЛКМ.
Текст:
Это нереально осуществить?

Задача:
Выделение текста двумя кликами (I - текстовый курсор):
1й делаем здесь: Это неIреально осуществить?
2й делаем здесь: Это нереальноI осуществить?

Будет выделено: реально

Другими словами, не нужно будет удерживать левую кнопку мыши, чтобы выделять текст.
Установил начальную метку выделения, конечную и готово.
Особенно будет удобно, если текста много.

Смотрел про Range, Selection (JavaScript) и нихрена (извиняюсь) не понял, как решить казалось бы простую задачу!

Может быть можно как-то программно удерживать левую кнопку мыши, типа mousepressed. Может ли JavaScript получить состояние кнопки мыши, а потом поддерживать его, мол 0 - кнопка не нажата, а 1 - нажата?

Помогите, пожалуйста, товарищи!
Ответить с цитированием
  #2 (permalink)  
Старый 08.06.2015, 20:56
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Teamur, а такое выделение на каждый второй клик раздражать не будет?
Ответить с цитированием
  #3 (permalink)  
Старый 08.06.2015, 21:54
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Нет )
Насколько я понял так называемая граничная точка выделения (boundary point) появляется лишь когда пользователь зажимает и отводит курсор. (https://learn.javascript.ru/range-textrange-selection)

Длительное удерживание кнопки мыши нажатой напрягает мышцы, особенно если нужно выделить большой фрагмент текста. А тут 2 спокойных щелчка в начале и конце фрагмента и он выделен.

Данная фишка, так сказать, будет реализовываться в блоке в режиме contenteditable. Пользователь устанавливает текстовый курсор и как только он это сделает, скрипт должен включить выделение как если бы пользователь стал удерживать лкм.

Последний раз редактировалось Teamur, 08.06.2015 в 22:06.
Ответить с цитированием
  #4 (permalink)  
Старый 08.06.2015, 22:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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.
Ответить с цитированием
  #5 (permalink)  
Старый 08.06.2015, 22:28
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Отлично, но выделение какое-то не отзывчивое, как-то через раз.
А можно ли сделать так, чтобы скрипт сам "зажал" лкм как только курсор будет установлен? Спасибо.
Типа Mousedown fixed - двигаем курсор, а за ним всё выделяется - второй клик и готово )
Конечно, я понимаю на словах все просто, но в реальности (

Последний раз редактировалось Teamur, 08.06.2015 в 22:37.
Ответить с цитированием
  #6 (permalink)  
Старый 08.06.2015, 22:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Teamur,
Сообщение от Teamur
как-то через раз.
значит был в начале правый клик
Сообщение от Teamur
А можно ли сделать так, чтобы скрипт сам "зажал" лкм как только курсор будет установлен?
рекомендую мульфильм - двое из ларца

и весь этот скрипт заменяет клавиша Shift -- вам трудно второй клик сделать с нажатым шифтом?
Ответить с цитированием
  #7 (permalink)  
Старый 08.06.2015, 22:46
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

О точно, можно ведь имитировать нажатие шифта. )
Желание реализовать эту функцию в итоге привело к тому, что я зарегистрировался на этом сайте, так как запутался в десятках вкладок и потерялся в море информации, так и не нашел ничего подобного.

Последний раз редактировалось Teamur, 08.06.2015 в 22:50.
Ответить с цитированием
  #8 (permalink)  
Старый 08.06.2015, 22:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Teamur
имитировать нажатие шифта
когда вы это сотворите програмно -
Сообщение от Teamur
Range, Selection
будут для вас как семечки
Ответить с цитированием
  #9 (permalink)  
Старый 08.06.2015, 22:57
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Значит Javascript не такой могущественный как я считал ранее. Всего то нужно 2 клика. Может так: клик в блоке - выделяет всё, что в нем находится, но в стилях мы специально скроем фон выделения (100% прозрачность). Далее 2 кликами мы просто будем обрубать то, что находится снаружи.
Ответить с цитированием
  #10 (permalink)  
Старый 08.06.2015, 22:59
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Честно говоря, я без понятия как решить задачу. Я бы сразу добавил скрипт в избранное! ))
Двое из ларца: "И так сойдет! )))"
Не хотелось бы, чтобы это сообщение было последним в теме!

Последний раз редактировалось Teamur, 08.06.2015 в 23:05.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
svg - как включить текст к rect, circle и т.п.? eugen35 (X)HTML/CSS 0 25.08.2014 20:28
высота полей в grid по количеству текста. чтобы влазил весь текст без многоточия. Krepkii ExtJS 5 02.09.2013 11:02
Запрет прокрутки при прокрутке DIV cyberblade Общие вопросы Javascript 13 10.01.2013 14:34
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 01:33