Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   выделение слова двойным щелчком (https://javascript.ru/forum/misc/8505-vydelenie-slova-dvojjnym-shhelchkom.html)

Скриптор 30.03.2010 01:13

выделение слова двойным щелчком
 
Как показали опыты, выделение слова двойным щелчком, каким-то образом задаёт необязательно эквивалентный результат тому, когда вы задаете вначале задаете первую позицию выделения (мышкой - 1 щелчок или же курсор здесь уже стоял), а дальше выделяете мышкой ли или с помощью стрелок.

Совпадают результаты только в таких традиционно редактируемых областях как "input" и "textarea". Если скажем подобное попробовать получить на примере "<div contentEditable='true'>", последует облом: выделенной областью будет "точка входа" по двойному щелчку, а вовсе не его результату, то есть выделенному блоку (обычно слову). При виделении для копирования, впрочем это незаметно (похоже, что не сказывается, а может просто не замечали).



В чем дело? Можно ли это как-то обойти?

Скриптор 31.03.2010 12:37

Если понятней будет с кодом, то здесь подробнейшие объяснения.
.
Задача простая:
добится такого же поведения для "<div contentEditable='true'>" (я о двойном щелчке мыши по слову).
Решения достаточно для IE.

Все же никак не пойму, как же это так мышка выделяет, что результаты разные получаются?

subzey 31.03.2010 23:01

Это defaultAction для браузера. Вы уверены, что хотите переопределить его? Учитывая, что пользователь привыкает к своему юзерагенту и любое отклонение от привычного поведения, пусть и кажущееся удобным, его приведет к повторному преодолению "когнитивного сопротивления"?

Скриптор 31.03.2010 23:30

Такой проблемы для меня, к счастью, не стоит.

Меня интересует именно возможность повесить на конкретный div какой-нибудь обработчик, чтобы он воспроизводил такое же поведение, какое происходит в input и textarea по двойному щелчку.

Такое ощущение, что это что-то простое (вроде бы как получить координаты выделения), но я пока хожу вокруг и около. :(

subzey 01.04.2010 00:47

Что ж…

defaultAction выполняется после всех обработчиков javascript, и отменить его можно, вызвав event.preventDefault (W3C) или event.returnValue = false (MS).

Событие click наступает после последовательных mousedown и mouseup над одним и тем же местом на экране (над одним и тем же элементом в HTML5). Событие dblclick — два последовательных клика. event.detail возвращает количество щелчков, т.е, полноценная замена несуществующим tripleclick, quadripleclick и т.п.

Дерзайте!


Часовой пояс GMT +3, время: 21:46.