Мышь: отмена выделения, невыделяемые элементы
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/selection-range.
У кликов мыши есть неприятная особенность.
Двойной клик или нажатие с движением курсора как правило инициируют выделение текста.
Если мы хотим обрабатывать эти события сами, то такое выделение – некрасиво и неудобно. В этой главе мы рассмотрим основные способы, как делать элемент невыделяемым.
Для полноты картины, среди них будут и такие, которые применимы не только к событиям мыши.
Способ 1: отмена mousedown/selectstart
Проблема: браузер выделяет текст при движении мышью с зажатой левой кнопкой , а также при двойном клике на элемент. Даже там, где это не нужно.
Если сделать двойной клик на таком элементе, то обработчик сработает. Но побочным эффектом является выделение текста браузером.
Текст
Чтобы избежать выделения, мы должны предотвратить действие браузера по умолчанию для события selectstart в IE и mousedown в других браузерах.
Полный код элемента, который обрабатывает двойной клик без выделения:
Двойной клик сюда выведет "Тест", без выделения
При установке на родителя – все его потомки станут невыделяемыми:
Выделение, всё же, возможно
Отмена действия браузера при mousedown/selectstart отменяет выделение при клике, но не запрещает его полностью.
Если пользователь всё же хочет выделить текстовое содержимое элемента, то он может сделать это.
Достаточно начать выделение (зажать кнопку мыши) не на самом элементе, а рядом с ним. Ведь там отмены не произойдёт, выделение начнётся, и дальше можно передвинуть мышь уже на элемент.
Способ 2: снятие выделения постфактум
Вместо предотвращения выделения, можно его снять в обработчике события, после того, как оно уже произошло.
Для этого мы используем методы работы с выделением, которые описаны в отдельной главе Выделение: Range, TextRange и Selection. Здесь нам понадобится всего лишь одна функция clearSelection , которая будет снимать выделение.
Пример со снятием выделения при двойном клике на элемент списка:
У этого подхода есть две особенности, на которые стоит обратить внимание:
- Выделение всё же производится, но тут же снимается. Это выглядит как мигание и не очень красиво.
- Выделение при помощи передвижения зажатой мыши всё ещё работает, так что посетитель имеет возможность выделить содержимое элемента.
Способ 3: свойство user-select
Существует нестандартное CSS-свойство user-select , которое делает элемент невыделяемым.
Оно когда-то планировалось в стандарте CSS3, потом от него отказались, но поддержка в браузерах уже была сделана и потому осталась.
Это свойство работает (с префиксом) везде, кроме IE9-:
Строка до.. Этот текст нельзя выделить (кроме IE9-) .. Строка после
IE9-: атрибут unselectable=«on»
В IE9- нет user-select , но есть атрибут unselectable.
Он отменяет выделение, но у него есть особенности:
- Во-первых, невыделяемость не наследуется. То есть, невыделяемость родителя не делает невыделяемыми детей.
- Во-вторых, текст, в отличие от user-select , всё равно можно выделить, если начать выделение не на самом элементе, а рядом с ним.
Этот текст невыделяем в IE, кроме дочерних элементов
Левая часть текста в IE не выделяется при двойном клике. Правую часть ( em ) можно выделить, т.к. на ней нет атрибута unselectable .
Этот текст невыделяем в IE, кроме дочерних элементов
Итого
Для отмены выделения есть несколько способов:
- CSS-свойство user-select – везде кроме IE9- (нужен префикс, нестандарт).
- Атрибут unselectable=»on» – работает для любых IE (должен быть у всех потомков)
- Отмена действий на mousedown и selectstart :
elem.onmousedown = elem.onselectstart = function() < return false; >;
Какой же способ выбирать?
Это зависит от задач и вашего удобства, а также конкретного случая. Все описанные способы работают.
Недостаток user-select – в том, что посетитель теряет возможность скопировать текст. А что, если он захочет именно это сделать?
В любом случае эти способы не предназначены для защиты от выделения-и-копирования.
Если уж хочется запретить копирование – можно использовать событие oncopy :
Уважаемый копирователь, почему-то автор хочет заставить вас покопаться в исходном коде этой страницы. Если вы знаете JS или HTML, то скопировать текст не составит для вас проблемы, ну а если нет, то увы.
Отменить выделение ячеек.
× The language used in menus and dialogs (Язык, используемый в меню и диалоговых окнах) in ASAP Utilities can be set to «Русский (Russian)».
Выделить › 4. Отменить выделение ячеек.
С помощью этой утилиты вы можете отменить выделение ячеек, что невозможно сделать в Excel.
В большинстве программ MS Windows отменить выделение можно удерживая клавишу Control. Эта функция не работает в Excel, поэтому данная утилита очень полезна.
По умолчанию вы можете запустить эту утилиту с помощью сочетания клавиш Control + Alt + D .
(Компания Microsoft добавила аналогичную функцию в 2018/2019 годах в Excel 365, Excel 2019 и более новые версии.)
Снимки экрана
Пример снимка экрана: 1 Before (Вот версия на английском языке.)
Пример снимка экрана: 2 After (Вот версия на английском языке.)

Practical tricks on how this can help you
Запуск этой утилиты
- Нажмите кнопку ASAP Utilities › Выделить › 4. Отменить выделение ячеек.
- Укажите сочетание клавиш: ASAP Utilities › Избранное и сочетания клавиш › Редактировать избранное и сочетания клавиш.

Additional keywords for this tool:
Снять выделение, отменить выделение, удалить, снять флажок, отменить выбор
Как снять выделение с ячеек в Excel
В Excel существует очень много способов для быстрого выбора ячеек и диапазонов, но снять выделение с выбранного диапазона появилась сравнительно недавно.
Как отменить выбор ячеек в Excel
Представьте, что вам нужно выделить большой диапазон ячеек, и вы случайно выбрали лишние ячейки. Раньше приходилось отменять выделение и заново выделять ячейки.
Недавно разработчики Excel добавили возможность снятия выделения с ячеек.
На данный момент эта функция доступна только в Excel для Office 365, Excel 2019.
В следующем примере стоит задача выделить ячейки с данными по каждому месяцу, без ячеек с квартальными значениями.

Можно, конечно, сначала выбрать один первый диапазон (январь-март), затем зажав клавишу Ctrl выбрать второй (апрель-июнь). Но, как это часто бывает, мы случайно выбираем лишние данные и приходится такую процедуру повторять заново.
Теперь отменить выделение можно следующим способом:
- Нажмите и удерживайте клавишу Ctrl.
- Выделите ячейки с которых хотите снять выделение.
В случае, если вы случайно снимите выделение с нужных ячеек, которые хотите оставить выделенными, просто повторите тот же процесс — удерживайте клавишу Ctrl.
Снять выделение со строк и столбцов
Аналогичным образом работает снятие выделения со строк и столбцов.
Если вы хотите выбрать весь лист, а затем снять выделение с некоторых конкретных столбцов, вы можете сделать это следующим образом:
- Выделите весь лист, нажав на треугольник в верхней левой части листа (или используйте сочетание клавиш Ctrl+A)
- Удерживая клавишу Ctrl, выберите нужные столбцы, нажимая на соответствую букву столбца.
Как снять выделение в Фотошопе
По мере постепенного изучения программы Photoshop у пользователя возникает множество затруднений, связанных с использованием определенных функций редактора. В данной статье мы поговорим о том, как убрать выделение в Фотошопе.
Отмена выделения
Казалось бы, что может быть сложного в обычной отмене выделения? Возможно, для одних этот шаг покажется очень легким, но у неопытных пользователей может возникнуть барьер и здесь. Все дело в том, что при работе с данным редактором существует множество тонкостей, о которых начинающий пользователь не имеет представления. Чтобы избежать подобного рода казусов, а также для более быстрого и эффективного изучения Фотошопа, разберем все нюансы, возникающие при снятии выделения.
Варианты снятия выделения
-
Вариантов того, как отменить выделение в Фотошопе, существует множество. Ниже мы представим самые распространенные из них, те, которые применяют пользователи редактора Photoshop.
Здесь стоит помнить, что если вы использовали инструмент «Быстрое выделение», то нужно нажимать внутри выделенной области. К тому же это получится сделать, только если включена функция «Новое выделение». 
Отметим тот факт, что при работе с разными инструментами контекстное меню имеет свойство изменяться. Поэтому пункт «Отменить выделение» может находиться на различных позициях.
Необходимо помнить о некоторых особенностях, которые помогут вам при работе с Фотошопом. Например, при использовании «Волшебной палочки» или «Лассо» выделенная область при клике мышкой не снимется. В данном случае появится новое выделение, которое уж точно вам не нужно. Также нужно уяснить, что убрать выделение можно при полном завершении работы с ним (например, при использовании инструмента «Прямолинейное лассо»). В целом, это были главные нюансы, которые нужно знать при работе с «марширующими муравьями» в Фотошопе.
