Контекстное меню

Контекстное меню (итал. menu contestuale, также англ. context menu или всплывающее меню) — это список возможных действий, которые можно выполнить над объектом, с которым взаимодействует пользователь.

Эпитет «контекстное» указывает на то, что пункты меню зависят от типа объекта (или объектов), с которым осуществляется работа, и от приложения, управляющего этим объектом. То есть содержимое меню зависит от контекста, в котором используется объект, и меняется в зависимости от ситуации.

undefined

В различных версиях наиболее распространённых операционных систем контекстное меню открывается при клике правой кнопкой мыши на объекте, например на файле, папке или их группе. В этих операционных системах меню можно вызвать также с помощью клавиатуры, нажав сочетание клавиш Shift + F10 либо специальную клавишу, называемую «клавиша меню», «контекстное меню» или «клавиша приложений»[1].

В Mac OS аналогичное меню можно открыть сочетанием левого клика мышью с одновременным нажатием клавиши Control.

Реализация

Контекстные меню открываются путём различных действий пользователя, направленных на область графического интерфейса, поддерживающую такие меню. Конкретный способ зависит от платформы:

  • На компьютерах под управлением Microsoft Windows, macOS или Unix с системой X Window меню вызывается нажатием вспомогательной кнопки мыши (обычно правой), и открывается для области под указателем мыши.
  • На системах с мышью с одной кнопкой меню обычно вызываются длительным нажатием основной кнопки (например, на иконках Dock в macOS) либо сочетанием клавиатуры и мыши (например, Ctrl-клик в классическом Mac OS и macOS). Альтернативно в macOS можно активировать мышиную клавиатуру через универсальный доступ; тогда на ноутбуках или компактных клавиатурах сочетание Function+Ctrl+5, либо Ctrl+5 (на цифровой клавиатуре) или Function+Ctrl+i (для ноутбуков).
  • В устройствах с мультитач-интерфейсом, как MacBook или Surface, контекстное меню открывается двойным нажатием или касанием двумя пальцами вместо одного.
  • На некоторых моделях смартфонов камеры умеют распознавать QR-коды при съёмке. Затем появляется всплывающее окно с предложением «открыть» содержимое QR (например, веб-сайт или параметры Wi-Fi).
  • В некоторых интерфейсах рядом с пунктами контекстного меню отображаются значки, чтобы ускорить их визуальное распознавание при навигации[1].
  • Контекстные меню могут также содержать верхний ряд пиктограмм для быстрого доступа к наиболее часто используемым опциям[2].

Особенностью поведения Windows является то, что меню открывается не в момент нажатия правой кнопки мыши, а только после её отпускания; пользователю требуется ещё раз кликнуть (на этот раз левой кнопкой), чтобы выбрать пункт. Это поведение отличается от macOS и большинства других графических интерфейсов.

Контекстные меню могут иметь иерархическую структуру, позволяющую переходить по нескольким уровням вложенных пунктов. Способы реализации различаются: Microsoft Word одной из первых программ стала отображать подменю только после нажатия на стрелку в соответствующем пункте, иначе выполняя действие, присвоенное основному пункту. Это позволяет быстро повторять действие с предыдущими параметрами и лучше разделять опции и команды.

X Window Manager

Следующие оконные менеджеры поддерживают контекстные меню:

Удобство использования

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

Обычно меню появляется непосредственно под указателем мыши, но если указатель находится у края экрана, меню сдвигается, чтобы поместиться на экране, что снижает однородность поведения и может помешать формированию мышечной памяти. Если меню вызывается с клавиатуры (например, через Shift + F10), оно появляется возле активного элемента интерфейса, а не под указателем, чтобы облегчить узнавание[3].

Веб-страницы

Следующий пример демонстрирует создание контекстного меню на JavaScript[4]:

<p id="noContextMenu">noContext = document.getElementById('noContextMenu');

noContext.addEventListener('contextmenu', e => {
  e.preventDefault();
});

Примеры

Примечания

Ссылки