События мыши javascript: Основы событий мыши

Содержание

События мыши: последовательность наступления

Update: Более новый материал по этой теме находится по адресу https://learn.javascript.ru/mouse-clicks.

  1. Виды кликов-событий
  2. Возможность отключения реакции браузера
  3. Последовательность генерации
    1. Левый одиночный клик
    2. Правый одиночный клик
    3. Средний клик
    4. Двойной клик
      1. Двойной левый клик
      2. Двойной правый клик
      3. Двойной средний клик
  4. mouseover, mouseout и mousemove
    1. Порядок и частота
    2. Текстовые элементы

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

К разным кнопкам браузеры привязывают свои собственные «действия по-умолчанию», например — Firefox при клике на среднюю кнопку мыши открывает новую вкладку.
В зависимости от браузера, для каких-то кнопок действия по-умолчанию можно отменять, а для каких-то — нельзя.

Самое известное событие — onclick. Более полный список:

mousedown
Нажатие на кнопку мыши
mouseup
Нажатая кнопка мыши отпущена
click
Клик мыши
dblclick
Двойной клик
contextmenu
Правый клик

События mousedown и mouseup в основном используются, когда идет нажатие на кнопку, перемещение, а потом мышь отпускается. Например, при выделении текста, или переносе объекта.

А события click и dblclick в основном нужны для работы с простыми кликами. Клик происходит при последовательных mousedown->mouseup на одном и том же объекте. Если Вы передвините мышь куда-то между mousedown и mouseup, то событие click не произойдет.

Событие contextmenu возникает при правом клике мышью, и по умолчанию вызывает контекстное меню. Не на всех браузер показ меню можно отключить.

Когда Вы кликаете на чем-то в браузере, он генерирует мышиные события. Обычно они завязаны на внутренние механизмы браузера, например — переход по ссылке или вызов контекстного меню.

Но javascript позволяет своим обработчикам событий останавливать обработку событий, так чтобы исключить «родную» реакцию браузера.

Все браузеры позволяют отключать реакцию по умолчанию на левую кнопку мыши.

Фрагмент кода кроссбраузерного обработчика выглядит следующим образом:

...
if (event.preventDefault)
	event.preventDefault()
else
	event.returnValue= false
return false

Однако, для правой и средней кнопки — действия по умолчанию могут быть отключены не везде. В некоторых браузерах разрешить javascript’у отключать родные действия могут специальные настройки в конфигурации.

В Firefox специальной настройкой можно позволить javascript убирать родную реакцию для средней кнопки мыши, а Opera — для правой.

Эти настройки влияют на все страницы, и их нельзя поменять из javascript. Редкие посетители их ставят, так что можно сказать — правая и средняя кнопка не юзабельны для ряда браузеров.

Вот сводная таблица по возможности отключения родной реакции браузера:

 Левая кнопкаСредняя кнопкаПравая кнопка
Internet ExplorerДаДаДа
FirefoxДа
Править конфиг
Да
Safari WinДаДаДа
OperaДаНетНет
KonquerorДаДаДа

Во всех браузерах при клике мышью генерируются события:

 Все браузеры
ВНИЗ
  • mousedown
ВВЕРХ
  • mouseup
  • click

Правую кнопку мыши можно использовать в IE, Firefox и Konqueror. Для остальных браузеров обычно
применяют оригинальное решение: вместо правого клика предлагается shift+click.

 Internet ExplorerFirefox WinFirefox LinOpera 9 и KonquerorSafari Win
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
  • contextmenu
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • contextmenu
  • mouseup
  • contextmenu
  • mouseup
  • mouseup
  • mouseup
  • click

Заметим, что событие click для правой кнопки мыши генерируется только в Safari, который обрабатывает правую кнопку точно так же, как левую.

Кроме того, событие contextmenu есть только в Firefox и Internet Explorer, причем время генерации зависит от операционной системы. Это связано с реальным поведением контекстного меню. В Firefox/Internet Explorer под Windows оно появляется только когда отпустишь кнопку, а в Firefox под Linux — сразу.

Средняя кнопка мыши сейчас есть почти у всех, даже мышам с 2 кнопками дают возможность делать средний клик — нажав 2 кнопки одновременно, или кликнув на колесико.

Однако, в Firefox и Opera к среднему клику привязаны свои действия по умолчанию, которые нельзя отключить через javascript.

Поэтому реально средний клик юзабелен лишь в Internet Explorer и Konqueror.

 Internet Explorer и Safari WinOpera 9, Konqueror, Firefox
ВНИЗ
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup

Обработка двойных кликов важна, даже если Вы не собираетесь их использовать. Например, Internet Explorer генерирует при двойном клике — одно событие click, а Firefox — два.

Вот полная картина происходящего:

 Internet ExplorerFirefox, Opera и Safari WinKonqueror
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup
  • click
  • mouseup
  • click
ВНИЗ
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • dblclick
  • mouseup
  • click
  • dblclick
  • mouseup
  • dblclick

Заметим, что Internet Explorer не генерирует mousedown на втором нажатии.

Двойной правый и двойной средний клик почти не используюся в современных интерфейсах, но рассмотрим и их тоже — оригинальные решения в Web часто бывают к месту

 Internet Explorer, Firefox WinFirefox Lin, OperaSafari WinKonqueror
ВНИЗ
  • mousedown
  • mousedown
  • contextmenu
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • contextmenu
  • mouseup
  • mouseup
  • click
  • mouseup
ВНИЗ
  • mousedown
  • mousedown
  • contextmenu
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • contextmenu
  • mouseup
  • mouseup
  • click
  • dblclick
  • mouseup

К счастью, здесь Internet Explorer не пропускает второе событие mousedown.

Все браузеры, кроме Safari (тестировалось под Windows) считают два правых клика — двумя кликами по очереди, а не dblclick.

И, наконец, двойной клик средней кнопкой, которая юзабельна только в Internet Explorer, Konqueror и Safari Win.

Как и в случае с правой кнопкой, этот клик обычно считается за два обычных.

 Internet ExplorerSafari WinFirefox, Opera, Konqueror
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup
  • click
  • mouseup
ВНИЗ
  • mousedown
  • mousedown
  • mousedown
ВВЕРХ
  • mouseup
  • click
  • mouseup
  • click
  • dblclick
  • mouseup

События mouseover и mouseout срабатывают каждый раз, когда мышь заходит на элемент или выходит с него.

Событие mousemove срабатывает при каждом передвижении мыши. Если Вы пишите код для обработки mousemove

— постарайтесь сделать его достаточно быстрым, иначе при передвижении курсора будут заметны тормоза.

При переходе с внешнего элемента на внутренний, фиксируется событие onmouseout для внешнего и onmouseover для внутреннего. Смысл в том, что мышь находится ровно «в одном элементе» одновременно: в ближайшем(по z-index) и самом глубоком.

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

Можно зайти во внутренний элемент, не проходя через внешний.

Иначе говоря, если мышь движется быстро, то события для внешнего элемента могут оказаться пропущенными.

Точно также можно выйти из внутреннего элемента, не проходя через внешний. Всего-то надо быстро двигать мышкой .

Тестовый скрипт.

Текстовые элементы

Было замечено, что Safari странно обрабатывает mouseover/mouseout при проходе над текстовыми элементами, регистрирует для них события и т.п.

В этом случае можно фильтровать лишние события, проверяя реальное положение мыши.

Тестовый скрипт.

События мыши

Откройте для себя основы работы с событиями мыши в JavaScript

Смотрите больше наСобытия JavaScript

При просмотре событий мыши у нас есть возможность взаимодействовать с

  • mousedownкнопка мыши была нажата
  • mouseupкнопка мыши была отпущена
  • clickсобытие щелчка
  • dblclickсобытие двойного щелчка
  • mousemoveпри наведении курсора мыши на элемент
  • mouseoverкогда мышь перемещается над элементом или одним из его дочерних элементов
  • mouseenterкогда мышь перемещается по элементу. Похожий наmouseoverно не пузырится (подробнее об этом скоро!)
  • mouseoutкогда мышь перемещается из элемента, и когда мышь входит в дочерние элементы
  • mouseleaveкогда мышь перемещается за пределы элемента. Похожий наmouseoutно не пузырится (подробнее об этом скоро!)
  • contextmenuпри открытии контекстного меню, например, при щелчке правой кнопкой мыши

События перекрываются. Когда вы отслеживаетеclickсобытие, это похоже на отслеживаниеmousedownза которым следуетmouseupмероприятие. В случаеdblclick,clickтакже стреляют два раза.

mousedown,mousemoveиmouseupможет использоваться в комбинации для отслеживания событий перетаскивания.

Будь осторожен сmousemove, поскольку он срабатывает много раз во время движения мыши. Нам нужно подать заявкуудушение, о чем мы поговорим подробнее при анализе прокрутки.

Находясь внутри обработчика eventh, у нас есть доступ ко многим свойствам.

Например, при событии мыши мы можем проверить, какая кнопка мыши была нажата, проверивbuttonсвойство объекта события:

const link = document.getElementById('my-link')
link.addEventListener('mousedown', event => {
  // mouse button pressed
  console.log(event.button) //0=left, 2=right
})

Вот все свойства, которые мы можем использовать:

  • altKeyистина, если клавиша alt была нажата при срабатывании события
  • buttonесли есть, номер кнопки, которая была нажата при срабатывании события мыши (обычно 0 = основная кнопка, 1 = средняя кнопка, 2 = правая кнопка). Работает с событиями, вызванными нажатием кнопки (например, щелчки)
  • buttonsесли есть, число, указывающее кнопку (и), нажатую при любом событии мыши.
  • clientX/clientYкоординаты x и y указателя мыши относительно окна браузера, независимо от прокрутки
  • ctrlKeyистина, если клавиша ctrl была нажата при срабатывании события
  • metaKeyистина, если мета-клавиша была нажата при срабатывании события
  • movementX/movementYкоординаты x и y указателя мыши относительно позиции последнего события mousemove. Используется для отслеживания скорости мыши при ее перемещении
  • regionиспользуется в Canvas API
  • relatedTargetвторичная цель для события, например, при движении
  • screenX/screenYкоординаты x и y указателя мыши в координатах экрана
  • shiftKeyистина, если клавиша Shift была нажата, когда событие было запущено

Скачать мою бесплатнуюРуководство для начинающих по JavaScript


Больше руководств по браузеру:

  • Некоторые полезные приемы, доступные в HTML5
  • Как я заставил веб-сайт на CMS работать в автономном режиме
  • Полное руководство по прогрессивным веб-приложениям
  • API-интерфейс Fetch
  • Руководство по Push API
  • API обмена сообщениями канала
  • Учебник для сервис-воркеров
  • Руководство по Cache API
  • Руководство по API уведомлений
  • Погрузитесь в IndexedDB
  • API селекторов: querySelector и querySelectorAll
  • Эффективно загружайте JavaScript с помощью defer и async
  • Объектная модель документа (DOM)
  • API веб-хранилища: локальное хранилище и хранилище сеансов
  • Узнайте, как работают HTTP-файлы cookie
  • API истории
  • Формат изображения WebP
  • XMLHttpRequest (XHR)
  • Подробное руководство по SVG
  • Что такое URL-адреса данных
  • Дорожная карта для изучения веб-платформы
  • CORS, совместное использование ресурсов между источниками
  • Веб-воркеры
  • Руководство по requestAnimationFrame ()
  • Что такое Doctype
  • Работа с консолью DevTools и консольным API
  • API синтеза речи
  • Как дождаться события готовности DOM в простом JavaScript
  • Как добавить класс к элементу DOM
  • Как перебрать элементы DOM из querySelectorAll
  • Как удалить класс из элемента DOM
  • Как проверить, есть ли у элемента DOM класс
  • Как изменить значение узла DOM
  • Как добавить событие щелчка в список элементов DOM, возвращаемых из querySelectorAll
  • WebRTC, веб-API реального времени
  • Как получить позицию прокрутки элемента в JavaScript
  • Как заменить элемент DOM
  • Как принимать только изображения в поле входного файла
  • Зачем использовать предварительную версию браузера?
  • Объект Blob
  • Файловый объект
  • Объект FileReader
  • Объект FileList
  • ArrayBuffer
  • ArrayBufferView
  • Объект URL
  • Типизированные массивы
  • Объект DataView
  • API BroadcastChannel
  • API Streams
  • Объект FormData
  • Объект навигатора
  • Как использовать API геолокации
  • Как использовать getUserMedia ()
  • Как использовать API перетаскивания
  • Как работать с прокруткой на веб-страницах
  • Обработка форм в JavaScript
  • События клавиатуры
  • События мыши
  • Сенсорные события
  • Как удалить всех дочерних элементов из элемента DOM
  • Как создать атрибут HTML с помощью ванильного Javascript
  • Как проверить, установлен ли флажок, используя JavaScript?
  • Как скопировать в буфер обмена с помощью JavaScript
  • Как отключить кнопку с помощью JavaScript
  • Как сделать страницу редактируемой в браузере
  • Как получить значения строки запроса в JavaScript с помощью URLSearchParams
  • Как сразу удалить весь CSS со страницы
  • Как использовать insertAdjacentHTML
  • Safari, предупредить перед выходом
  • Как добавить изображение в DOM с помощью JavaScript
  • Как сбросить форму
  • Как использовать Google Fonts

JavaScript для профессионалов.

События и обработка событий (Часть 2)
  • Главная >
  • Каталог >
  • JavaScript Базовый 2015 >
  • События и обработка событий (Часть 2)

Для прохождения теста нужно авторизироваться

Войти Регистрация

×

Вы открыли доступ к тесту! Пройти тест

Войдите или зарегестрируйтесь для того чтоб продолжить просмотр бесплатного видео

Войти Регистрация

№1

Знакомство с курсом JavaScript Advanced

0:03:11

Материалы урокаДомашние заданияТестирование

Видео курс JavaScript Advanced позволит вам углубится в изучение языка JavaScript. Программа обучения состоит из 10-ти уроков, на протяжении которых детально рассматриваются принципы работы с объектами, документами, CSS, событиями, формами, Cookies, графикой. Каждый урок насыщен как теорией, так и практикой. По завершению интенсивного обучения вы сможете создавать более эффективные веб-решения и повысите свою стоимость в глазах работодателя.

Читать дальше…

№2

Конструкторы и прототипы

1:41:14

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Основные конструкторы – Object(), Array(), Function(), Date(), String(). Принцип работы конструкторов, назначение ключевого слова this в конструкторе.
  • Создание пользовательских конструкторов.
  • Что такое прототип, использование прототипов и добавление свойств и методов в прототип.
  • Работа с конструктором Object
  • Объектно-ориентированные техники в языке JavaScript. Реализация наследования в JavaScript.

Читать дальше…

Работа с документами.

1:43:50

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Способы подключения JavaScript сценариев к HTML документу.
  • Создание сценариев (модулей), которые добавляют минимальное количество глобальных переменных.
  • Использование свойств объекта document. Методы для получения объектов со страницы.
  • DOM – Document Object Model, примеры создания новых узлов, манипулирование существующими узлами, удаление узлов.

Читать дальше…

Объект window. Регулярные выражения.

1:27:15

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Создание и использование таймеров, использование функций setInterval и setTimeout в языке JavaScript
  • Использование Location
  • Использование объекта Navigator
  • Создание всплывающих окон с помощью JavaScript кода.
  • Работа с типом данных string. Методы для работы со строковыми значениями.
  • Регулярные выражения в языке JavaScript. Синтаксис и методы, которые могут работать с регулярными выражениями.

Читать дальше…

JavaScript и CSS

1:07:31

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Основы работы с CSS. Создание CSS правил и подключение правил к HTML документам.
  • Рассмотрение отдельных CSS свойств, которые часто используются при создании динамических страниц.
  • Способы изменения CSS стилей через JavaScript код. Работа с вычисляемыми стилями (computed styles).

Читать дальше…

События и обработка событий (Часть 1)

1:10:06

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Модель обработки события DOM Level 0. Варианты создания обработчиков, преимущества и недостатки.
  • Модель обработки события DOM Level 2. Маршрутизация события, контроль распространения события по дереву разметки с помощью методов stopPropagation() и preventDefault()
  • Модель обработки событий Internet Explorer.

Читать дальше…

События и обработка событий (Часть 2)

0:47:56

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Интерфейс объекта события (Event)
  • События мыши.
  • Обработка событий клавиатуры.
  • Примеры обработки событий.

Читать дальше…

Формы и элементы формы

1:08:42

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Элемент form, его назначение и способы получения к нему доступа с помощью JavaScript кода.
  • Элемент input, свойства и типы элементов.
  • Примеры проверки (валидации) данных введенных пользователем в форму.
  • Пример использования объекта Date для работы с датой и временем.

Читать дальше…

Cookies и сохранение данных на стороне клиента

0:45:56

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Назначение cookies рассмотрение принципов хранения данных на стороне клиента.
  • Свойство cookie объекта document. Примеры создания, удаления и изменения значений.
  • Другие механизмы хранения данных на стороне клиента — WebStorage, использование свойств localStorage и sessionStorage.

Читать дальше…

Работа с графикой на стороне клиента

1:00:15

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Элемент img, способы получения объекта элемента с изображением и основные его свойства.
  • Примеры предварительной загрузки изображений с сервера.
  • Создание графики на стороне клиента с помощью CSS.
  • Создание графики на стороне клиента с помощью SVG.
  • Создание графики на стороне клиента с помощью Canvas(HTML5).

Читать дальше…

AJAX и HTTP протокол

1:06:39

Материалы урокаДомашние заданияТестирование

В видео уроке рассматриваться следующие темы:

  • Основы работы веб приложений. Разбор протокола HTTP. Использование приложения Fiddler для откладки HTTP запросов.
  • AJAX – Asynchronous JavaScript And XML.
  • Использование объекта XMLHttpRequest для создания синхронных и асинхронных HTTP запросов.
  • Использование XMLHttpRequest для отправки данных с POST и GET запросами.
  • Примеры простого AJAX приложения.

Читать дальше…

ПОКАЗАТЬ ВСЕ

основные темы, рассматриваемые на уроке

0:00:00

Вступление

0:00:51

Пример получения объекта Event

0:04:58

Интерфейс Event в модели DOM

0:10:54

Интерфейс MouseEvent

0:13:46

Интерфейс Event в Internet Explorer

0:16:51

Примеры использования событий мыши

0:20:46

События клавиатуры

0:27:24

Фильтрация ввода с клавиатуры

0:38:25

Перетаскивание элементов

0:45:39

Обработка закрытия окна браузера

0:47:31

ПОКАЗАТЬ ВСЕ

Рекомендуемая литература

JavaScript. Сильные стороны Дуглас Крокфорд

Титры видеоурока

Титров к данному уроку не предусмотрено

ПОДРОБНЕЕ

ПОДРОБНЕЕ

ПОДРОБНЕЕ

ПОДРОБНЕЕ

Регистрация через

или E-mail

Нажав на кнопку «Зарегистрироваться»,
Вы соглашаетесь с условиями использования.

Уже есть аккаунт

Получите курс бесплатно

Вы выбрали курс для изучения
«»
Чтобы получить доступ к курсу, зарегистрируйтесь на сайте.

РЕГИСТРАЦИЯ

Спасибо за регистрацию

Перейдите на почту и подтвердите Ваш аккаунт,
чтобы получить доступ ко всем
бесплатным урокам и вебинарам на сайте ITVDN.com

ПОДТВЕРДИТЬ ПОЧТУ НАЧАТЬ ОБУЧЕНИЕ

Спасибо за регистрацию

Ваш аккаунт успешно подтвержден.
Начать обучение вы можете через Личный кабинет
пользователя или непосредственно на странице курса.

НАЧАТЬ ОБУЧЕНИЕ

Подтверждение аккаунта

На Ваш номер телефона было отправлено смс с кодом активации аккаунта. Пожалуйста, введите код в поле ввода.

Отправить код еще раз

Изменить номер телефона

Ошибка

Использование событий мыши — Windows Forms .NET

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 5 мин

В большинстве программ Windows Forms для обработки ввода с помощью мыши используются события мыши. В этой статье содержится обзор событий мыши, включая сведения об использовании и предоставляемые данные для каждого события. Дополнительные сведения о событиях в целом см. в разделе Общие сведения о событиях (Windows Forms .NET).

Важно!

Документация руководства по классическим приложениям для .NET 6 и .NET 5 (включая .NET Core 3.1) находится в разработке.

События мыши

Основной способ реагирования на ввод с помощью мыши заключается в обработке событий мыши. В следующей таблице показаны события мыши и описание их возникновения.

Событие мышиОписание
ClickЭто событие возникает при отпускании кнопки мыши, как правило, перед событием MouseUp. Обработчик этого события принимает аргумент типа EventArgs. Обрабатывать это событие следует в случае, если нужно только определить, когда происходит щелчок.
MouseClickЭто событие возникает, когда пользователь щелкает элемент управления. Обработчик этого события принимает аргумент типа MouseEventArgs. Обрабатывать это событие следует в случае, когда необходимо получить сведения о мыши при щелчке.
DoubleClickЭто событие происходит при двойном щелчке элемента управления. Обработчик этого события принимает аргумент типа EventArgs. Обрабатывать это событие следует в случае, если нужно только определить, когда происходит двойной щелчок.
MouseDoubleClickЭто событие возникает, когда пользователь дважды щелкает мышью. Обработчик этого события принимает аргумент типа MouseEventArgs. Обрабатывать это событие следует в случае, когда необходимо получить сведения о мыши при двойном щелчке.
MouseDownЭто событие происходит при нажатии пользователем кнопки мыши, когда указатель мыши находится на элементе управления. Обработчик этого события принимает аргумент типа MouseEventArgs.
MouseEnterЭто событие возникает, когда указатель мыши перемещается на границу или клиентскую область элемента управления в зависимости от типа элемента управления. Обработчик этого события принимает аргумент типа EventArgs.
MouseHoverЭто событие возникает при остановке и помещении указателя мыши на элемент управления. Обработчик этого события принимает аргумент типа EventArgs.
MouseLeaveЭто событие возникает, когда указатель мыши покидает границу или клиентскую область элемента управления в зависимости от типа элемента управления. Обработчик этого события принимает аргумент типа EventArgs.
MouseMoveЭто событие возникает при перемещении указателя мыши на элемент управления. Обработчик этого события принимает аргумент типа MouseEventArgs.
MouseUpЭто событие возникает, когда указатель мыши находится на элементе управления и пользователь отпускает кнопку мыши. Обработчик этого события принимает аргумент типа MouseEventArgs.
MouseWheelЭто событие возникает, когда пользователь вращает колесико мыши, когда фокус находится на элементе управления. Обработчик этого события принимает аргумент типа MouseEventArgs. Для определения того, насколько прокручено колесико мыши, можно использовать свойство Delta элемента MouseEventArgs.

Объект MouseEventArgs отправляется обработчикам событий мыши, связанных с нажатием кнопки мыши и отслеживанием ее движений. Объект MouseEventArgs предоставляет сведения о текущем состоянии мыши, включая положение указателя мыши в клиентских координатах, какие кнопки мыши нажаты и произошла ли прокрутка колесика мыши. Некоторые события мыши, например те, которые возникают, когда указатель мыши пересек границы элемента управления, отправляют обработчику событий объект EventArgs без подробных сведений.

Если нужно знать текущее состояние кнопок мыши или положение ее указателя, но при этом избежать обработки события мыши, можно также использовать свойства MouseButtons и MousePosition класса Control. Свойство MouseButtons возвращает сведения о том, какие кнопки мыши в настоящее время нажаты. Свойство MousePosition возвращает экранные координаты указателя мыши, которые эквивалентны значению, возвращаемому методом Position.

Преобразование между экранными и клиентскими координатами

Так как некоторые сведения о положении мыши представлены в клиентских координатах, а другие — в экранных, может потребоваться преобразовать точку из одной системы координат в другую. Это легко сделать с помощью методов PointToClient и PointToScreen, доступных в классе Control.

Стандартное поведение события щелчка

Если требуется обрабатывать события щелчка мыши в определенном порядке, необходимо знать порядок, в котором вызываются события щелчка в элементах управления Windows Forms. Когда любая поддерживаемая кнопка мыши нажимается и отпускается, все элементы управления Windows Forms, кроме отмеченных в списке ниже, вызывают события щелчка в одном и том же порядке. Ниже приведен порядок событий, вызываемых одинарным щелчком мыши.

  1. СобытиеMouseDown .
  2. СобытиеClick .
  3. СобытиеMouseClick .
  4. СобытиеMouseUp .

Ниже приведен порядок событий, вызываемых двойным щелчком мыши.

  1. СобытиеMouseDown .

  2. СобытиеClick .

  3. СобытиеMouseClick .

  4. СобытиеMouseUp .

  5. СобытиеMouseDown .

  6. СобытиеDoubleClick .

    Может изменяться в зависимости от того, установлено ли для бита стиля StandardDoubleClick элемента управления значение true. Подробнее о настройке бита ControlStyles см. в разделе, посвященном методу SetStyle.

  7. СобытиеMouseDoubleClick .

  8. СобытиеMouseUp .

Особые элементы управления

Поведение перечисленных ниже элементов управления при щелчке мыши не соответствует стандартному.

  • Button

  • CheckBox

  • ComboBox

  • RadioButton

    Примечание

    Если пользователь щелкает поле редактирования, кнопку или элемент в списке, то для элемента управления ComboBox возникают описанные ниже события.

    • Щелчок левой кнопкой мыши: Click, MouseClick
    • Щелчок правой кнопкой мыши: События щелчка не вызываются
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick; Click, MouseClick
    • Двойной щелчок правой кнопкой мыши: События щелчка не вызываются
  • Элементы управления TextBox, RichTextBox, ListBox, MaskedTextBox и CheckedListBox

    Примечание

    Если пользователь щелкает любое место внутри этих элементов управления, то возникают описанные ниже события.

    • Щелчок левой кнопкой мыши: Click, MouseClick
    • Щелчок правой кнопкой мыши: События щелчка не вызываются
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick, DoubleClick, MouseDoubleClick
    • Двойной щелчок правой кнопкой мыши: События щелчка не вызываются
  • Элемент управления ListView

    Примечание

    Указанные ниже события возникают только в том случае, если пользователь щелкает элементы в ListView. Если пользователь щелкает мышью в любом другом месте элемента управления, то события не вызываются. В дополнение к событиям, описанным ниже, существуют события BeforeLabelEdit и AfterLabelEdit, которые могут представлять интерес, если нужно выполнять проверку с помощью элемента управления ListView.

    • Щелчок левой кнопкой мыши: Click, MouseClick
    • Щелчок правой кнопкой мыши: Click, MouseClick
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClick
    • Двойной щелчок правой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClick
  • Элемент управления TreeView

    Примечание

    Указанные ниже события возникают только в том случае, если пользователь щелкает сами элементы или справа от них в элементе управления TreeView. Если пользователь щелкает мышью в любом другом месте элемента управления, то события не вызываются. В дополнение к событиям, описанным ниже, существуют события BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck и AfterLabelEdit, которые могут представлять интерес, если нужно выполнять проверку с помощью элемента управления TreeView.

    • Щелчок левой кнопкой мыши: Click, MouseClick
    • Щелчок правой кнопкой мыши: Click, MouseClick
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClick
    • Двойной щелчок правой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClick

Поведение отрисовки для переключателей

Переключатели, такие как элементы управления, производные от класса ButtonBase, имеют описанное ниже нестандартное поведение отрисовки в сочетании с событиями щелчка.

  1. Пользователь нажимает кнопку мыши.

  2. Элемент управления отрисовывается в состоянии «нажато».

  3. Возникает событие MouseDown.

  4. Пользователь отпускает кнопку мыши.

  5. Элемент управления отрисовывается в состоянии «отпущено».

  6. Возникает событие Click.

  7. Возникает событие MouseClick.

  8. Возникает событие MouseUp.

    Примечание

    Если пользователь перемещает указатель за границы переключателя при нажатой кнопке мыши (например, перемещает указатель мыши за границы элемента управления Button, когда он нажат), переключатель будет отрисовываться в состоянии «отпущено» и происходит только событие MouseUp. События Click и MouseClick в этой ситуации не наступают.

См. также

  • Общие сведения об использовании мыши (Windows Forms .NET)
  • Управление указателями мыши (Windows Forms .NET)
  • Как имитировать события мыши (Windows Forms .NET)
  • System.Windows.Forms.Control

События мыши jQuery


События > События мыши  

Устанавливает обработчик «клика» мышью по элементу, либо, запускает это событие.

События > События мыши  

Bind an event handler to the “contextmenu” JavaScript event, or trigger that event on an element.

События > События мыши  

Устанавливает обработчик двойного «клика» мышью по элементу, либо, запускает это событие.

События > События мыши  

Устанавливает обработчик(и) двух событий: mouseenter и mouseleave.

События > События мыши  

Устанавливает обработчик нажатия кнопки мыши на элементе, либо, запускает это событие.

События > События мыши  

Устанавливает обработчик появления курсора над элементом, либо, запускает это событие.

События > События мыши  

Устанавливает обработчик выхода курсора из области элемента, либо, запускает это событие.

События > События мыши  

Устанавливает обработчик движения курсора мыши внутри элемента, либо, запускает это событие.

События > События мыши  

Устанавливает обработчик выхода курсора из области элемента, либо, запускает это событие.

События > События мыши  

Bind an event handler to the “mouseover” JavaScript event, or trigger that event on an element.

События > События мыши  

Устанавливает обработчик возвращения кнопки мыши в ненажатое состояние, либо, запускает это событие.

Устаревшие методы > Версия 1.8  | События > События мыши  | Удаленные  

Поочередно выполняет одно из нескольких заданных действий.

Событие MouseEvent

❮ События ДОМ ❮ Объекты событий


Объект MouseEvent

События, происходящие при взаимодействии мыши с HTML-документом, относятся к объекту MouseEvent.


Свойства и методы MouseEvent

9кнопка 0020
Свойство/метод Описание
AltKey Возвращает информацию о том, была ли нажата клавиша «ALT» при запуске события мыши
Возвращает, какая кнопка мыши была нажата при запуске события мыши
кнопки Возвращает, какие кнопки мыши были нажаты при запуске события мыши
клиентX Возвращает горизонтальную координату указателя мыши относительно текущего окна, когда было инициировано событие мыши
клиентY Возвращает вертикальную координату указателя мыши относительно текущего окна, когда событие мыши было инициировано
CtrlKey Возвращает информацию о том, была ли нажата клавиша «CTRL» при запуске события мыши
getModifierState() Возвращает true, если указанный ключ активирован
метаключ Возвращает информацию о том, была ли нажата клавиша «META» при запуске события
движениеX Возвращает горизонтальную координату указателя мыши относительно позиция последнего события mousemove
движениеY Возвращает вертикальную координату указателя мыши относительно позиция последнего события mousemove
смещениеX Возвращает горизонтальную координату указателя мыши относительно положение края целевого элемента
смещение Y Возвращает вертикальную координату указателя мыши относительно положение края целевого элемента
страницаX Возвращает горизонтальную координату указателя мыши относительно документа, когда было инициировано событие мыши
страница Y Возвращает вертикальную координату указателя мыши относительно документа при инициировании события мыши
регион  
связанная цель Возвращает элемент, связанный с элементом, вызвавшим событие мыши
экранX Возвращает горизонтальную координату указателя мыши относительно экрана при возникновении события
ЭкранY Возвращает вертикальную координату указателя мыши относительно экрана при возникновении события
ShiftKey Возвращает информацию о том, была ли нажата клавиша «SHIFT» при запуске события
который Возвращает, какая кнопка мыши была нажата при запуске события мыши

Унаследованные свойства и методы

Museevent унаследовал все свойства и методы по сравнению с:

The Uievent

Объект события


Типы событий

. Описание по клику Событие происходит, когда пользователь щелкает элемент в контекстном меню Событие происходит, когда пользователь щелкает элемент правой кнопкой мыши, чтобы открыть контекстное меню ondblclick Событие возникает, когда пользователь дважды щелкает элемент при нажатии мыши Событие происходит, когда пользователь нажимает кнопку мыши над элементом на ввод с помощью мыши Событие происходит при наведении указателя на элемент на мышелист Событие происходит при перемещении указателя за пределы элемента перемещение мыши Событие происходит, когда указатель перемещается, когда он находится над элементом onmouseout Событие происходит, когда пользователь перемещает указатель мыши за пределы элемента или одного из его дочерних элементов при наведении мыши Событие происходит при перемещении указателя на элемент или на один из его дочерних элементов на мышке Событие происходит, когда пользователь отпускает кнопку мыши над элементом


❮ События ДОМ ❮ Объекты событий


NEW

Мы только что выпустили
Видео W3Schools

Узнать

COLOR PICKER
КОД ИГРЫ

Играть в игру




Top Tutorials
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

Основные ссылки
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

3 Лучшие примеры0234 Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


FORUM | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools использует W3.CSS.

События мыши JavaScript | Типы событий мыши в JavaScript

В следующей статье представлен обзор событий мыши JavaScript. Событие мыши — это событие, которое генерируется, когда мышь взаимодействует с элементами html, зарегистрированными в объекте mouseEvent. Существуют различные события, связанные с событием мыши, такие как щелчок мышью, наведение мыши, отключение мыши и т. д. Всякий раз, когда генерируется событие мыши, браузер выполняет какое-либо действие или действие. Действие, выполняемое для обработки события мыши, называется обработчиком события мыши, а процесс обработки события мыши называется обработчиком события мыши.

Типы событий мыши в JavaScript

Ниже приведены шесть типов событий мыши:

  • щелчок: событие щелчка происходит, когда мышь щелкает элемент регистра. Имя обработчика события — onclick.
  • mouseup: событие mouseup происходит, когда кнопка мыши отпускается над элементом. Имя обработчика события — onmouseup.
  • mousedown: событие mousedown происходит, когда кнопка мыши нажимается на элемент. Имя обработчика события — onmousedown.
  • mousemove: событие mousemove возникает, когда кнопка мыши перемещается по элементу. Имя обработчика события — onmousemove.
  • mouseover: событие mouseover происходит, когда курсор мыши перемещается на элемент. Имя обработчика события onmouseover.
  • mouseout: событие mouseout происходит, когда курсор мыши выходит за пределы элемента. Имя обработчика события — onmouseout.

Примеры событий мыши JavaScript

Ниже приведены упомянутые примеры:

Пример #1

событие щелчка мышью

Код:



2 title> Это пример для событий мыши







Вывод приведенного выше кода:

После нажатия кнопки вывод is:

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

Пример #3

событие mousedown

Код:



Это пример событий мыши

>





Вывод приведенного выше кода:

После отпускания кнопки (нажмите) , вывод:

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

Пример #4

событие mousemove

Код:



Это пример событий мыши


>



Вывод приведенного выше кода:

После того, как вы наведете курсор на кнопку, вывод будет следующим:

Как и в приведенном выше коде, событие перемещения мыши обрабатывается, когда мы наводим указатель мыши на кнопку. Кнопка указывает обработчику onmousedown, чтобы изменить цвет текста на красный, поэтому, когда мышь перемещается по кнопке, генерируется событие onmousemove и изменяет цвет текста на красный, как показано в приведенном выше выводе.

Пример #5

События mouseover и mouseout

Код:



Это пример событий мыши




Наведите мышь на кнопку и получите координаты указателя мыши.





Вывод приведенного выше кода:

После того, как вы переместите кнопку, вывод будет :

И когда мышь наведена на кнопку, вывод будет следующим:

Как и в приведенном выше коде, события наведения и исчезновения мыши обрабатываются, когда мы перемещаем мышь на кнопку и выходим из нее. Кнопка определяет функцию обработчика onmouseover funOver() и обработчик onmouseout как функцию funOut(), поэтому, когда мышь перемещается по кнопке, отображаются координаты x и y, а при перемещении ничего не происходит.

Заключение

Когда мышь взаимодействует с элементами html, генерируется событие мыши. Существуют различные типы событий мыши: щелчок, перемещение мыши, наведение мыши, опускание мыши, подъем мыши и удаление мыши.

Рекомендуемые статьи

Это руководство по событиям мыши JavaScript. Здесь мы обсудим введение в JavaScript Mouse Events, а также типы и примеры. Вы также можете ознакомиться со следующими статьями, чтобы узнать больше:

  1. События JavaScript
  2. Исключение Javascript Throw
  3. Программа чтения файлов JavaScript
  4. Объект истории JavaScript

Javascript — события мыши

Javascript — события мыши

См. разделы 7B и 7H книги.

События мыши, безусловно, самые важные события. На этой странице я представляю некоторые из наиболее распространенных проблем и трюки.

Пройдемся по всем событиям мыши: mousedown, mouseup и щелчок, дблклик, движение мыши и, наконец, наведение и отключение мыши. Затем я объясняю связанные с ним цели, события fromElement и toElement характеристики. Наконец, собственный Microsoft события mouseenter и mouseleave.

Для совместимости браузера см. Страница Таблицы совместимости событий.

Пример

Вот небольшой пример. Попробуйте, чтобы лучше понять приведенные ниже объяснения.
Mousedown, mouseup, click и dblclick регистрируются для ссылки. Вы увидите события, которые происходят в текстовой области или в предупреждении, если вы так что выбирай.

По этой ссылке зарегистрированы обработчики событий.
Очистить текстовое поле.

Mousedown, mouseup, щелчок

Если пользователь щелкает по элементу не менее трех событий мыши, в этот заказ:

  1. mousedown , пользователь нажимает кнопку мыши на этом элементе
  2. mouseup , пользователь отпускает кнопку мыши на этом элементе
  3. щелчок , обнаружен один mousedown и один mouseup на этом элементе

Вообще mousedown и mouseup более полезны, чем нажмите . Некоторые браузеры не позволяют считывать информацию о кнопках мыши. по клику . Кроме того, иногда пользователь делает что-то с помощью мыши, но не щелкает следует событие.

Предположим, пользователь нажимает кнопку мыши на ссылке, а затем перемещает мышь за пределы ссылки. а затем отпускает кнопку мыши. Теперь ссылка регистрирует только mousedown мероприятие. Точно так же, если пользователь нажимает кнопку мыши, затем перемещает мышь по ссылке. а затем отпускает кнопку мыши, ссылка регистрирует только движение мыши . Ни в случае происходит кликов событий.

Является ли это проблемой, зависит от желаемого взаимодействия с пользователем. Но обычно вы должны зарегистрировать свой скрипт onmousedown/up , если только вы не уверены, что вам нужно событие click и ничего больше.

Если вы используете оповещения для обработки этих событий, браузер может потерять информацию о том, какое событие на каком элементе и сколько раз это происходило, искажая ваши сценарии. Так что это лучше не использовать оповещения.

Дблклик

Событие dblclick используется редко. Даже когда вы используете его, вы должны быть уверены, что никогда не для регистрации как onclick , так и ondblclick обработчик событий для того же HTML-элемента. Выяснить, что на самом деле сделал пользователь, практически невозможно если вы зарегистрируете оба.

В конце концов, когда пользователь дважды щелкает element one Событие click происходит до двойной клик . Кроме, в Netscape второе событие click также обрабатывается отдельно перед dblclick . Наконец, оповещения здесь тоже опасны.

Так что держите свои click s и dblclick хорошо разделенными, чтобы избежать осложнения.

Движение мыши

Событие mousemove работает нормально, но вы должны знать что для обработки всех событий mousemove может потребоваться довольно много системного времени. Если пользователь перемещает мышь на один пиксель, mousemove событие срабатывает. Даже когда на самом деле ничего не происходит, длинные и сложные функции требуют времени, и это может повлиять на удобство использования сайта: все идет очень медленно, особенно на старых компьютерах.

Поэтому лучше регистрировать обработчик событий onmousemove только тогда, когда он вам нужен и удалить его, как только он больше не нужен:

element.onmousemove = сделать что-то;
// потом
элемент.onmousemove = ноль;
 

Наведение и отключение мыши

Еще раз взгляните на пример, включите наведение мыши и попробуйте. В этом примере обработчик события onmouseover добавляется только к ev3 . Однако, вы заметите, что событие mouseover происходит не только тогда, когда мышь входит ev3 , но и при попадании в зону ev4 или пролет . В Mozilla до версии 1.3 событие срабатывает даже тогда, когда мышь входит в область текста!

Причина этого конечно бульканье событий. Пользователь вызывает событие mouseover на ev4 . Нет на наведении мыши на обработчик событий на этом элементе, но на ev3 есть . Как только событие всплывает до этого элемента, выполняется обработчик события.

Теперь эта установка, хотя и полностью правильная, создает некоторые проблемы. Наша первая проблема — таргетинг. Предположим, мышь вводит ev4 :

-----------------------------------------
| Это раздел |
| ----------------------------- |
| | Это раздел | |
| | -------- <-------- |
| | | промежуток | | |
| | | | | |
| | -------- | |
| ----------------------------- |
-----------------------------------------

<--------: движение мыши
 

Теперь target/srcElement этого события — ev4 : это элемент, на котором произошло событие, так как пользователь наводит на него указатель мыши. Но когда это произойдет:

-----------------------------------------
| Это раздел |
| ----------------------------- |
| | Это раздел | |
| | -------- | |
| | | промежуток | | |
| | | --------> | |
| | -------- | |
| ----------------------------- |
-----------------------------------------

-------->: движение мыши
 

событие имеет точно такой же target/srcElement . Здесь тоже мышь входит ev4 . Тем не менее, вы можете сделать одну вещь, когда мышь приходит из ev3 и другое дело, когда речь идет о SPAN. Поэтому нам нужно знать, где мышь родом.

W3C добавил свойство relatedTarget для наведения и удаления мыши. События. Это содержит элемент, из которого мышь пришла в случае наведение курсора мыши или элемент, к которому он переходит в случае mouseout .

Microsoft создала два свойства для хранения этой информации:

  • fromЭлемент относится к элементу, из которого исходит мышь. Это интересно знать в случае наведения мыши.
  • toElement относится к элементу, к которому перемещается мышь. Это интересно знать в случае mouseout.

В нашем первом примере relatedTarget/fromElement содержит ссылку на ev3 , в нашем втором примере на SPAN. Теперь вы знаете, откуда взялась мышь.

Кроссбраузерные скрипты

Итак, если вы хотите узнать, откуда взялась мышь в случае mouseover , выполните:

функция doSomething(e) {
если (!e) var e = window.event;
var relTarg = e.relatedTarget || е.из элемента;
}
 

Если вы хотите знать, куда движется мышь в случае mouseout , сделать:

функция doSomething(e) {
если (!e) var e = window.event;
var relTarg = e.relatedTarget || е.кЭлементу;
}
 

Мышь вне слоя

При навигации по слоям вам может понадобиться знать, когда мышь оставляет слой, чтобы его можно было закрыть. Поэтому вы регистрируете событие onmouseout обработчик слоя. Однако всплывающая подсказка событий приводит к тому, что этот обработчик событий срабатывает, когда мышь также оставляет любой элемент внутри слоя.

--------------
| Слой |.onmouseout = сделать что-то;
| -------- |
| | Ссылка | ----> Мы хотим знать об этом mouseout
| | | |
| -------- |
| -------- |
| | Ссылка | |
| | ----> | но не об этом
| -------- |
--------------
---->: движение мыши
 

Другим препятствием для показа является то, что при перемещении мыши в слой, а затем на ссылку, браузеры регистрируют событие mouseout на слое! Для меня это не имеет особого смысла (мышь все еще в слое), но все браузеры согласны с этим.

Так как же нам отклонить любой вывод мыши, который не происходит, когда мышь действительно покидает поле? слой?

функция doSomething(e) {
если (!e) var e = window.event;
var tg = (window.event) ? e.srcElement : e.target;
если (tg.nodeName != 'DIV') return;
var reltg = (e.relatedTarget) ? e.relatedTarget: e.toElement;
в то время как (reltg != tg && reltg.nodeName != 'ТЕЛО')
reltg= reltg.parentNode
если (reltg== tg) возврат;
// Отключение мыши произошло, когда мышь действительно покинула слой
// Обработка события
}
 

Сначала получите цель события, т.е. элемент, из которого вышла мышь. Если цель не DIV (слой), немедленно завершите функцию, так как мышь точно , а не покинула слой.

Если целью является слой, мы все еще не уверены, вышла ли мышь из слоя или вошла ссылка внутри слоя. Поэтому мы собираемся проверить связанных целей / с элементом . события, т. элемент, к которому переместилась мышь.

Мы считываем этот элемент, а затем будем двигаться вверх по дереву DOM, пока не найдем либо встретить цель события (т. е. DIV) или элемент тела .

Если мы встретим цель , мышь переместится к дочернему элементу слоя, поэтому мышь фактически не покинула слой. Останавливаем функцию.

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

Mouseenter и mouseleave

У Microsoft есть другое решение. Он создал два новых события mouseenter и mouseleave . Они почти такие же, как mouseover и mouseout, за исключением того, что они не реагируют на всплытие событий. Следовательно они видят весь HTML-элемент, на который они зарегистрированы, как один сплошной блок и не реагировать на наведение и выход внутри блока.

Таким образом, использование этих событий решает и нашу проблему: они реагируют только на наведение/выход курсора на элемент, на который они зарегистрированы.

На данный момент эти события поддерживаются только Explorer 5. 5 в Windows и выше. Возможно, другие поставщики браузеров скопируют эти события.

Конец

Вы подошли к концу моего введения в события. Удачи в написании своего скрипты обработки событий.

Курс веб-платформы


JavaScript в браузере использует модель программирования, управляемую событиями.

Обычно все начинается с реакции на событие.

Событием может быть загрузка DOM, или асинхронный запрос, который завершает выборку, или пользователь щелкает элемент или прокручивает страницу, или пользователь печатает на клавиатуре.

В этом уроке мы проанализируем активируемые пользователем события, поступающие от мыши или сенсорных устройств, например щелчки мышью или касания на мобильных устройствах.

Обработчики событий

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

Вы можете зарегистрировать несколько обработчиков для одного и того же события, и все они будут вызываться при возникновении этого события.

JavaScript предлагает три способа регистрации обработчика событий:

Встроенные обработчики событий

Этот стиль обработчиков событий очень редко используется сегодня из-за его ограничений, но это был единственный способ на заре JavaScript:

 < a href="#">Ссылка
 

Обработчики событий DOM

Это распространено, когда объект имеет не более одного обработчика событий, поскольку в этом случае нет возможности добавить несколько обработчиков:

 document.querySelector('a').onclick = () => {
  оповещение('ссылка нажата')
}
 

Вы можете проверить, назначен ли уже обработчик элементу, используя

 if ('onclick' в document.querySelector('a')) {
  alert('обработчик onclick уже зарегистрирован')
}
 

Использование

addEventListener()

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

 window.addEventListener('загрузить', () => {
  //окно загружено
})
 

Прослушивание различных элементов

Иногда addEventListener вызывается для окна , иногда для определенного элемента DOM. Почему?

Это вопрос определения размера сети, которую вы хотите, когда вы смотрите на перехватываемые события.

Вы можете прослушивать окно , чтобы перехватывать «глобальные» события, такие как использование клавиатуры, и вы можете прослушивать определенные элементы, чтобы проверять события, происходящие конкретно на них, например щелчок мышью по кнопке.

Объект Event передается обработчику событий

Обработчик событий получает объект Event в качестве первого параметра:

 const link = document.getElementById('my-link')
link.addEventListener('клик', событие => {
  // ссылка нажата
})
 

Этот объект содержит множество полезных свойств и методов, таких как:

  • цель , элемент DOM, создавший событие
  • тип , тип события
  • stopPropagation() , вызывается для остановки распространения события в DOM

и более. Вы можете увидеть полный список здесь.

Каждый конкретный тип событий, таких как щелчок мышью, событие касания, событие клавиатуры, реализует событие, которое расширяет этот базовый объект Event. В этом уроке мы говорим о событиях мыши и касания, поэтому нас интересуют эти 2:

  • MouseEvent
  • TouchEvent

События мыши

При просмотре событий мыши мы можем взаимодействовать с

  • mousedown кнопка мыши была нажата
  • mouseup кнопка мыши была отпущена
  • клик событие клика
  • dblclick событие двойного щелчка
  • mousemove при наведении мыши на элемент
  • mouseover при наведении мыши на элемент или один из его дочерних элементов
  • mouseenter при наведении мыши на элемент. Похоже на наведение курсора но не всплывает (подробнее об этом скоро!)
  • mouseout , когда мышь перемещается из элемента и когда мышь входит в дочерние элементы
  • mouseleave при перемещении мыши из элемента. Аналогичен mouseout , но не всплывает (подробнее об этом позже!)
  • contextmenu при открытии контекстного меню, т.е. правой кнопкой мыши нажмите

События перекрываются. Когда вы отслеживаете 9Событие 0347 click похоже на отслеживание события mousedown , за которым следует событие mouseup . В случае dblclick , click также срабатывает два раза.

mousedown , mousemove и mouseup можно использовать в комбинации для отслеживания событий перетаскивания.

Будьте осторожны с mousemove , так как он срабатывает много раз во время движения мыши. Нам нужно применить для регулирования , о чем мы поговорим подробнее, когда будем анализировать прокрутку.

Внутри обработчика событий у нас есть доступ к множеству свойств.

Например, в событии мыши мы можем проверить, какая кнопка мыши была нажата, проверив свойство кнопки объекта события:

 const link = document. getElementById('my-link')
link.addEventListener('mousedown', событие => {
  // кнопка мыши нажата
  console.log(event.button) //0=слева, 2=справа
})
 

Вот все свойства, которые мы можем использовать:

  • altKey true, если при запуске события была нажата клавиша alt
  • кнопка , если есть, номер кнопки, которая была нажата при срабатывании события мыши (обычно 0 = основная кнопка, 1 = средняя кнопка, 2 = правая кнопка). Работает с событиями, вызванными нажатием кнопки (например, щелчки)
  • кнопки , если есть, число, обозначающее кнопку(и), нажатую при любом событии мыши.
  • clientX / clientY координаты x и y указателя мыши относительно окна браузера, независимо от прокрутки
  • ctrlKey true, если клавиша ctrl была нажата во время запуска события
  • metaKey true, если метаклавиша была нажата при запуске события
  • MovementX / MovementY координаты x и y указателя мыши относительно положения последнего события mousemove. Используется для отслеживания скорости мыши при перемещении вокруг
  • регион , используемый в Canvas API
  • relatedTarget вторичная цель для события, например при перемещении
  • screenX / screenY координаты x и y указателя мыши в экранных координатах
  • shiftKey Истинно, если клавиша Shift была нажата во время запуска события

События касания

События касания — это события, которые запускаются при просмотре страницы на мобильном устройстве, таком как смартфон или планшет.

Они позволяют отслеживать события мультитач.

У нас есть 4 сенсорных события:

  • touchstart началось событие касания (касание поверхности)
  • touchend завершено событие касания (к поверхности больше не прикасаются)
  • touchmove палец (или что-то, что касается устройства) движется по поверхности
  • touchcancel событие касания было отменено

Каждый раз, когда происходит событие касания, нам передается событие касания:

 const link = document. getElementById('my-link')
link.addEventListener('touchstart', событие => {
  // событие касания запущено
})
 

Вот все свойства, к которым мы можем получить доступ для этого события

  • идентификатор уникальный идентификатор для этого конкретного события. Используется для отслеживания мультисенсорных событий. Тот же палец = тот же идентификатор.
  • clientX / clientY координаты x и y указателя мыши относительно окна браузера, независимо от прокрутки
  • screenX / screenY координаты x и y указателя мыши в координатах экрана
  • pageX / pageY координаты x и y указателя мыши в координатах страницы (включая прокрутку)
  • цель элемент коснулся

Всплытие событий и захват событий

Всплывание и захват — это две модели, которые используют события для распространения.

Предположим, ваша структура DOM

 

Вы хотите отслеживать, когда пользователи нажимают на кнопку, и у вас есть 2 прослушивателя событий, один на кнопка и один на #контейнер . Помните, что щелчок по дочернему элементу всегда будет распространяться на его родительские элементы, если только вы не остановите распространение (см. далее).

Эти прослушиватели событий будут вызываться по порядку, и этот порядок определяется используемой моделью всплытия/захвата событий.

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

В нашем примере обработчик 9Кнопка 0347 сработает перед обработчиком #container .

Захват происходит наоборот: внешние обработчики событий запускаются до более конкретного обработчика, который находится на кнопке .

По умолчанию всплывают все события .

Вы можете принять захват событий, применив третий аргумент к addEventListener, установив для него значение true :

 document. getElementById('container').addEventListener(
  'клик',
  () => {
    //окно загружено
  },
  истинный
)
 

Обратите внимание, что сначала запускаются все обработчики событий захвата .

Затем все всплывающие обработчики событий.

Порядок следует следующему принципу: DOM просматривает все элементы, начиная с объекта Window, и ищет элемент, по которому был сделан щелчок. При этом он вызывает любой обработчик событий, связанный с событием (этап захвата).

Как только он достигает цели, он повторяет путешествие вверх к родительскому дереву до объекта Window, снова вызывая обработчики событий (фаза всплытия).

Остановка распространения

Событие элемента DOM будет распространено на все его родительские элементы дерева, если оно не остановлено.

 
  <тело>
    <раздел>
      <а...>
 

Событие click на a будет распространяться на раздел и затем body .

Вы можете остановить распространение, вызвав метод stopPropagation() события, обычно в конце обработчика события:

 константная ссылка = document. getElementById('моя-ссылка')
link.addEventListener('mousedown', событие => {
  // обработать событие
  // ...
  событие.stopPropagation()
})
 


Предварительный просмотр уроков курса (5 из 20)



    DOM, часть I

    DOM, часть II

    События и события мыши/касания

    API геолокации

    getUserMedia()


Типы событий JavaScript — 8 основных типов для формирования ваших концепций JS!

Мы предлагаем вам светлое будущее с БЕСПЛАТНЫМИ онлайн-курсами Начать сейчас!!

Продвигаясь вперед в серии руководств DataFlair по JavaScript, сегодня мы узнаем о типах событий JavaScript. В этой статье мы увидим различные типы событий в JavaScript, на которые мы можем реагировать. Мы использовали событие мыши «щелчок» в нашем предыдущем уроке, но в JavaScript доступно гораздо больше, что делает вашу страницу более отзывчивой и интерактивной. Давайте продолжим нашу тему событий с типами событий, основанными на их приложениях.

Мы можем классифицировать события по трем категориям –

  • Спецификация W3 DOM : W3C управляет всеми спецификациями событий DOM, кроме тех, которые касаются элементов формы.
  • Спецификация HTML5: Сюда входят все события, специально используемые с HTML. К ним относятся отправка, ввод и т. д. Новые дополнения к этой категории включают изменение хэша, перед выгрузкой и т. д.
  • Объектные модели браузера : спецификации W3 еще не охватывают эти события. Они имеют дело с устройствами с сенсорным экраном, а события в этом разделе включают touchstart, touchend и т. д.

Прежде чем двигаться дальше, я рекомендую вам проверить класс JavaScript

Типы событий JavaScript

Ниже перечислены 8 основных типов событий JavaScript:

Будьте в курсе последних технологических тенденций
Присоединяйтесь к DataFlair в Telegram!!

1.

События пользовательского интерфейса

Возникают в результате любого взаимодействия с окном браузера, а не со страницей HTML. В этих событиях мы присоединяем прослушиватель событий к объекту окна, а не к объекту документа. Ниже перечислены различные события пользовательского интерфейса.

  • загрузить

Событие загрузки возникает, когда веб-страница завершает загрузку. Он также может срабатывать на узлах таких элементов, как изображений, скриптов или объектов.

  • выгрузить

Это событие возникает до того, как пользователи покинут страницу, т. е. веб-страница выгружается. Выгрузка страницы обычно происходит из-за того, что была запрошена новая страница.

  • ошибка

Это событие срабатывает, когда браузер встречает Ошибка JavaScript или несуществующий ресурс.

  • изменить размер

Срабатывает при изменении размера окна браузера. Но браузеры постоянно запускают это событие, поэтому избегайте использования этого события для запуска сложного кода; это может сделать страницу менее отзывчивой.

  • свиток

Это событие возникает, когда пользователь прокручивает вверх/вниз окно браузера. Он может относиться ко всей странице или к определенному элементу на странице.

Вы читали популярный блог DataFlair об объектах JavaScript?

2. События фокусировки и размытия

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

  • Для отображения советов или отзывов пользователям при их взаимодействии с элементом в форме. Подсказки обычно отображаются в элементах, отличных от того, с которым взаимодействует пользователь.
  • Для запуска проверки формы, когда пользователь переходит от одного элемента управления к другому, не дожидаясь отправки формы.

Различные события фокусировки и размытия:

  • фокус

Это событие запускается для определенного узла DOM, когда элемент получает фокус.

  • размытие

Это срабатывает для определенного узла DOM, когда элемент теряет фокус.

  • фокусин

Это событие совпадает с событием фокуса. Но Firefox еще не поддерживает событие focusin.

  • фокусировка

Это то же событие, что и событие размытия. Это новый тип события в JavaScript, поэтому сейчас он не поддерживается в Firefox.

События focus и blur используют метод захвата, в то время как события focusin и focusout используют как захват, так и пузырьковый подход потока событий.

Не забудьте прочитать нашу статью о JavaScript Frameworks

3. События мыши

Эти события запускаются, когда мышь перемещается или пользователь нажимает кнопку. Все элементы страницы поддерживают эти события и используют всплывающий подход. Эти действия работают по-разному на устройствах с сенсорным экраном. Предотвращение поведения событий мыши по умолчанию может привести к неожиданным результатам. Различные события мыши в JavaScript следующие:

  • нажмите

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

Сенсорный экран: Прикосновение к экрану действует как одиночный щелчок левой кнопкой мыши.

  • двойной клик

Это событие возникает, когда пользователь быстро дважды щелкает основную кнопку мыши.

Сенсорный экран: Двойное нажатие на экран действует как двойной щелчок левой кнопкой мыши.

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

  • мышь вниз

Срабатывает, когда пользователь нажимает любую кнопку мыши.

Сенсорный экран: Можно использовать событие touchstart .

  • Мышь вверх

Срабатывает, когда пользователь отпускает кнопку мыши.

Сенсорный экран: Вы можете использовать событие touchend .

У нас есть отдельные события mousedown и mouseup для добавления функций перетаскивания или элементов управления при разработке игр. Не забудьте 9Событие 0310 click представляет собой комбинацию событий mousedown и mouseup .

  • наведение мыши

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

  • мышь

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

События mouseover и mouseout обычно изменяют внешний вид графики на нашей веб-странице. Предпочтительной альтернативой этому является использование псевдокласса CSS: hover .

  • движение мыши

Срабатывает, когда пользователь перемещает курсор вокруг элемента. Это событие часто вызывается.

Самое время узнать о циклах JavaScript. ОБЯЗАТЕЛЬНО ПРОВЕРИТЬ!!

4. События клавиатуры

Эти события запускаются на любом устройстве, когда пользователь взаимодействует с клавиатурой.

  • ввод

Это событие срабатывает при изменении значения или