event.button в JavaScript — яка кнопка миші натиснута


Загальний опис

button — це властивість об'єкта MouseEvent, яка повертає номер кнопки миші, що була натиснута під час події. Вона використовується для визначення, яка саме кнопка була задіяна: ліва, середня чи права. Значення, яке повертає button, є числовим і відповідає стандарту: 0 — ліва кнопка, 1 — середня кнопка (колесо), 2 — права кнопка. Ця властивість стає в нагоді, коли вам потрібно обробляти події миші більш точно і реагувати залежно від того, яку саме кнопку натиснув користувач.

Наприклад, коли користувач натискає ліву кнопку миші, властивість button повертає значення 0. Якщо він натискає середню кнопку (звичайно це колесо миші), значення буде 1. Для правої кнопки миші значення буде 2.

Ось приклад обробки кліку:

document.addEventListener('mousedown', (event) => {
  if (event.button === 0) {
    console.log('Ліва кнопка миші натиснута.');
  } else if (event.button === 1) {
    console.log('Середня кнопка миші натиснута.');
  } else if (event.button === 2) {
    console.log('Права кнопка миші натиснута.');
  }
});

Як показано в прикладі, ви можете легко відслідковувати, яка кнопка була натиснута, і в залежності від цього виконувати відповідні дії. Це особливо корисно при створенні контекстних меню або специфічної взаємодії для кожної кнопки миші.

Також важливо зазначити, що ця властивість обробляється лише в подіях, пов'язаних з мишею, таких як mousedown, mouseup або click. При роботі з мобільними пристроями або сенсорними екранами властивість button не використовується, оскільки там немає фізичних кнопок миші.

автор: Bond

Порада

Зупиняйте подальше розповсюдження події за допомогою методу stopPropagation(), якщо потрібно зупинити дію кнопки миші тільки для певних елементів. Це дозволить ізолювати події і уникнути впливу на інші елементи на сторінці.

автор: Bond
Порада

Використовуйте button для обробки середньої кнопки миші (колеса). Середня кнопка часто використовується для прокрутки, але ви можете призначити їй специфічні дії, як-от відкриття нових вкладок або швидке закриття елементів.

автор: Bond
Порада

Не забувайте тестувати взаємодію з подіями mouseup і mousedown. Вони можуть мати різні значення для button у різних браузерах і сценаріях, тому важливо коректно обробляти кожну фазу взаємодії з мишею.

автор: Bond

Синтаксис

event.button

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 10.6 12 9
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі користувач взаємодіє з квадратом, натискаючи на нього різні кнопки миші. Ліва кнопка змінює колір квадрата на зелений, середня — на блакитний, а права — на червоний. Крім того, для правої кнопки миші вимикається стандартне контекстне меню, щоб взаємодія з квадратом була більш інтуїтивною.

HTML

<header>
  <h2 class="title">MouseEvent -> button</h2>
  <p class="description">Визначає, яка кнопка миші була натиснута під час події</p>
</header>
<main>
  <div class="result">
    <div id="colorBox" class="box"></div>
    <p id="output">Натисніть на квадрат мишею</p>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

.box {
  width: 200px;
  height: 200px;
  background-color: lightgray;
  margin: 0 auto;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-size: 18px;
}

.box:hover {
  opacity: 0.8;
}

JS

const colorBox = document.getElementById('colorBox');
const output = document.getElementById('output');

// Обробник події для зміни кольору залежно від кнопки миші
colorBox.addEventListener('mousedown', event => {
  if (event.button === 0) {
    colorBox.style.backgroundColor = 'lightgreen';
    output.textContent = 'Ліва кнопка миші: колір змінено на зелений';
  } else if (event.button === 1) {
    colorBox.style.backgroundColor = 'lightblue';
    output.textContent = 'Середня кнопка миші: колір змінено на блакитний';
  } else if (event.button === 2) {
    colorBox.style.backgroundColor = 'lightcoral';
    output.textContent = 'Права кнопка миші: колір змінено на червоний';
  }
});

// Вимикаємо стандартне контекстне меню для правої кнопки миші
colorBox.addEventListener('contextmenu', event => {
  event.preventDefault();
});
//# sourceURL=pen.js
автор: Bond

Цей приклад демонструє, як різні кнопки миші можуть змінювати вигляд елемента. Ліва кнопка миші змінює колір елемента на зелений, а права — на червоний, що дозволяє створювати різні варіанти взаємодії з елементами на сторінці.

HTML

<div id="targetElement">Демонстраційний елемент</div>

JS

document.addEventListener('mouseup', (event) => {
  const element = document.getElementById('targetElement');
  if (event.button === 0) {
    element.style.backgroundColor = 'lightgreen'; // Зміна кольору при натисканні лівої кнопки
  } else if (event.button === 2) {
    element.style.backgroundColor = 'lightcoral'; // Зміна кольору при натисканні правої кнопки
  }
});
автор: Bond

У цьому прикладі середня кнопка миші використовується для відкриття нового розділу на сторінці. Зазвичай ця кнопка не використовується для спеціальних дій, тому її можна налаштувати для виконання будь-якої кастомної функції.

document.addEventListener('mousedown', (event) => {
  if (event.button === 1) {
    console.log('Середня кнопка натиснута: відкриття нового розділу.');
    openNewSection();
  }
});

function openNewSection() {
  // Логіка для відкриття нового розділу сторінки
  console.log('Новий розділ відкрито');
}
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід