Skip to content

Commit 26b7ed5

Browse files
authored
update article
1 parent 8022b84 commit 26b7ed5

File tree

1 file changed

+33
-23
lines changed
  • 2-ui/3-event-details/1-mouse-events-basics

1 file changed

+33
-23
lines changed

2-ui/3-event-details/1-mouse-events-basics/article.md

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66

77
## Типы событий мыши
88

9-
Мы можем разделить события мыши на две категории: "простые" и "комплексные".
10-
11-
### Простые события
12-
13-
Самые часто используемые простые события:
9+
Мы уже видели некоторые из этих событий:
1410

1511
`mousedown/mouseup`
1612
: Кнопка мыши нажата/отпущена над элементом.
@@ -21,24 +17,20 @@
2117
`mousemove`
2218
: Каждое движение мыши над элементом генерирует это событие.
2319

24-
`contextmenu`
25-
: Вызывается при попытке открытия контекстного меню, как правило, нажатием правой кнопки мыши. Но, заметим, это не совсем событие мыши, оно может вызываться и специальной клавишей клавиатуры.
26-
27-
...Есть также несколько иных типов событий, которые мы рассмотрим позже.
28-
29-
### Комплексные события
30-
3120
`click`
3221
: Вызывается при `mousedown` , а затем `mouseup` над одним и тем же элементом, если использовалась левая кнопка мыши.
3322

3423
`dblclick`
3524
: Вызывается двойным кликом на элементе.
3625

37-
Комплексные события состоят из простых, поэтому в теории мы могли бы без них обойтись. Но хорошо, что они существуют, потому что работать с ними очень удобно.
26+
`contextmenu`
27+
: Вызывается при попытке открытия контекстного меню, как правило, нажатием правой кнопки мыши. Но, заметим, это не совсем событие мыши, оно может вызываться и специальной клавишей клавиатуры.
28+
29+
...Есть также несколько иных типов событий, которые мы рассмотрим позже.
3830

39-
### Порядок событий
31+
## Порядок событий
4032

41-
Одно действие может вызвать несколько событий.
33+
Как вы можете видеть из приведенного выше списка, действие пользователя может вызвать несколько событий.
4234

4335
Например, клик мышью вначале вызывает `mousedown`, когда кнопка нажата, затем `mouseup` и `click`, когда она отпущена.
4436

@@ -54,19 +46,37 @@
5446
<input onmousedown="return logMouse(event)" onmouseup="return logMouse(event)" onclick="return logMouse(event)" oncontextmenu="return logMouse(event)" ondblclick="return logMouse(event)" value="Кликни меня левой или правой кнопкой мыши" type="button"> <input onclick="logClear('test')" value="Очистить" type="button"> <form id="testform" name="testform"> <textarea style="font-size:12px;height:150px;width:360px;"></textarea></form>
5547
```
5648

57-
## Получение информации о кнопке: which
49+
## Кнопки мыши
50+
51+
События, связанные с кликом, всегда имеют свойство `button`, которое позволяет получить конкретную кнопку мыши.
52+
53+
Обычно мы не используем его для событий `click` и `contextmenu`, потому что первое происходит только при щелчке левой кнопкой мыши, а второе - только при щелчке правой кнопкой мыши.
5854

59-
События, связанные с кликом, всегда имеют свойство `which`, которое позволяет определить нажатую кнопку мыши.
55+
С другой стороны, обработчикам `mousedown` и `mouseup` может потребоваться `event.button`, потому что эти события срабатывают на любую кнопку, таким образом `button` позволяет различать "нажатие правой кнопки" и "нажатие левой кнопки".
6056

61-
Это свойство не используется для событий `click` и `contextmenu`, поскольку первое происходит только при нажатии левой кнопкой мыши, а второе -- правой.
57+
Возможными значениями `event.button` являются:
6258

63-
Но если мы отслеживаем `mousedown` и `mouseup`, то оно нам нужно, потому что эти события срабатывают на любой кнопке, и `which` позволяет различать между собой "нажатие правой кнопки" и "нажатие левой кнопки".
59+
| Состояние кнопки | `event.button` |
60+
|--------------|----------------|
61+
| Левая кнопка (основная) | 0 |
62+
| Средняя кнопка (вспомогательная) | 1 |
63+
| Правая кнопка (вторичная) | 2 |
64+
| Кнопка X1 (назад) | 3 |
65+
| Кнопка X2 (вперед) | 4 |
6466

65-
Есть три возможных значения:
67+
Большинство мышек имеют только левую и правую кнопку, поэтому возможные значения это 0 или 2. Сенсорные устройства также генерируют аналогичные события, когда кто-то нажимает на них.
6668

67-
- `event.which == 1` -- левая кнопка
68-
- `event.which == 2` -- средняя кнопка
69-
- `event.which == 3` -- правая кнопка
69+
Также есть свойство `event.buttons`, в котором все нажатые в данный момент кнопки представлены в виде целого числа, по одному биту на кнопку. На практике это свойство используется очень редко, вы можете найти подробную информацию по адресу [MDN](mdn:/api/MouseEvent/buttons), если вам это когда-нибудь понадобится.
70+
71+
```warn header="Устревшее свойство `event.which`"
72+
В старом коде вы можете встретить `event.which` свойство - это старый нестандартный способ получения кнопки с возможными значениями:
73+
74+
- `event.which == 1` – левая кнопка,
75+
- `event.which == 2` – средняя кнопка,
76+
- `event.which == 3` – правая кнопка.
77+
78+
На данный момент `event.which` устарел, нам не следует его использовать.
79+
```
7080
7181
Средняя кнопка сейчас -- скорее экзотика, и используется очень редко.
7282

0 commit comments

Comments
 (0)