Jquery событие при наведении. Javascript события мыши

11.05.2019

SSH (англ. Secure SHell - «безопасная оболочка») - сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол. Таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System.

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

Первая версия протокола, SSH-1, была разработана в 1995 году исследователем Тату Улёненом из Технологического университета Хельсинки, Финляндия. SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, несовместимая с SSH-1. Протокол приобрел ещё большую популярность, и к 2000 году у него было около двух миллионов пользователей. В настоящее время под термином «SSH» обычно подразумевается именно SSH-2, т.к. первая версия протокола ввиду существенных недостатков сейчас практически не применяется.

В этой статье речь пойдет о Javascript событиях мыши. Эти события являются очень важными в Javascript и используются на каждом шагу. Сначала я расскажу вам о всех стандартных событиях связанных с мышкой: mousedown , mouseup , click , dblclick , mousemove и, наконец, mouseover и mouseout .

События mousedown, mouseup и click

Когда пользователь кликает на элемент, то срабатывает не меньше чем 3 события мыши в таком порядке:

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

В основном события mousedown и mouseup более полезны нежели click . Иногда пользователь кликает мышкой, но событие click не срабатывает.

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

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

Помните, что если вы используете alert"ы, то браузер может запутаться и потерять порядок выполняющихся событий и количество их вызовов.

Событие dblclick (двойной клик)

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

Когда пользователь делает двойной клик на элементе сначала срабатывает событие click и только потом dblclick . Использование alert сообщений здесь также крайне опасно.

Mousemove событие

Событие mousemove работает нормально, но Вы должны помнить, что обработка такого рода событий может занимать некоторое количество времени. Событие mousemove срабатывает когда пользователь передвигает курсор мыши на один пиксель. Казалось бы ничего особенного не происходит, но внутри есть сложные функции, процес выполнение которых занимает длительный промежуток времени. Это может привести к нестабильной работе сайта. Поэтому лучше всего использовать обработчик события onmousemove , только там, где это действительно нужно, и обязательно удалять его в будущем.

Element.onmousemove = doSomething;
// позже
element.onmousemove = null;

Mouseover и mouseout события

Давайте рассмотрим небольшой пример. Попробуйте поводить курсор мышки поверх элементов с разным фоном. Элемент 1 должен слегка мигать при наведении на него курсором - это срабатывает событие mouseover .

Element№1

Element№2 span

Тем не менее, как Вы видите, это событие срабатывает и при наведении курcора мыши на элемент№2 и даже span.

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

"Откуда пришла мышь?" или свойства relatedTarget, fromElement и toElement

Microsoft создали два ствойства чтобы хранить эту информацию:

  • fromElement - относится к элементу от которого пришла мышь.
  • toElement - к элементу к которому пришла мышь.

Кроссбраузерный код

И так если Вы хотите знать откуда пришла мышка используя событие mouseover , ипользуйте следующий скрипт:

Function doSomething(e) {
var relTarg = e.relatedTarget || e.fromElement;
}

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

Function doSomething(e) {
if (!e) var e = window.event;
var relTarg = e.relatedTarget || e.toElement;
}

Mouseenter и mouseleave

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

Ну вот и все о чем я хотел рассказать касательно Javascript событий мыши. С удовольствием отвечу на ваши комментарии.

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

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

Управление веб-страницей с помощью событий jQuery

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

.click()
Это событие запускается, когда вы нажимаете и отпускаете кнопку мыши. Применяется к ссылкам, картинкам, кнопкам, абзацам, блокам и т.д.

.dblclick()
Событие запускается, когда вы дважды нажимаете и отпускаете кнопку мыши, например, открываете какую-нибудь папку на рабочем столе.

.mousedown()
Событие происходит во время нажатия кнопки мыши, например, при перетаскивании элементов.

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

.mouseout()
Событие запускается, когда вы уводите указатель мыши с элемента.

.mouseover()
Событие запускается, когда вы проводите указателем мыши по элементу (аналогично использованию псевдокласса:hover).

.mouseup()
Событие активизируется, когда вы отпускаете кнопку мыши.

2. События документа/окна

.load()
Событие запускается, когда браузер загрузит все файлы веб-страницы: html-файлы, внешние css и javascript файлы, медиа-файлы. Это может быть неудобно в случае если веб-страница содержит большое количество файлов. Для решения данной проблемы можно воспользоваться функцией ready() , которая запускает скрипты сразу после загрузки html-кода.

.resize()
Событие запускается, когда вы изменяете размер окна браузера.

.scroll()
Событие запускается, когда вы используете полосы прокрутки, либо прокручиваете веб-страницу с помощью колесика мыши, или же используете для этих целей клавиши клавиатуры (pg up, pg dn, home, end).

.unload()
Событие запускается, когда вы собираетесь покинуть страницу, щелкая по ссылке для перехода на другую страницу, закрываете вкладку страницы или же окно браузера.

3. События форм

.blur()
Событие запускается, когда поле формы выводится из фокуса, т.е. вы ввели данные в поле формы и перешли на другое.

.change()
Событие запускается при изменении статуса поля формы, например при выбора пункта из выпадающего меню.

.focus()
Событие запускается при переходе в поле формы, щелкая в нем кнопкой мыши или клавишей табуляции.

.reset()
Событие позволяет вернуть форму в первоначальное состояние, отменив сделанные изменения.

.select()
Событие запускается, когда вы выделяете текст внутри текстового поля формы.

.submit()
Событие запускается, когда вы отправляете заполненную форму с помощью щелчка по кнопке «Отправить» или нажатия клавиши «Enter», когда курсор помещен в текстовом поле.

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

.keydown()
Событие запускается при нажатии клавиши, перед событием keypress.

.keypress()
Событие запускается, когда вы нажимаете на клавишу, до тех пор, пока вы не отпустите клавишу.

.keyup()
Событие запускается, когда вы отпускаете клавишу.

5. События jQuery

.hover()
Данная функция работает как событие, позволяя одновременно решить две задачи, связанные с событием наведения указателя мыши и событием снятия указателя мыши в отношении выбранного объекта. Основная структура функции:
$("#селектор").hover(функция1, функция2);

.toggle()
Событие работает аналогично событию hover() , с разницей в том, что событие запускается от щелчка кнопкой мыши. Например, можно открыть выпадающее меню одним щелчком и скрыть вторым.

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

При запуске события браузер сохраняет информацию о нём в объекте события . Объект события содержит данные, собранные в момент, когда событие произошло. Обработка события происходит с помощью функции, при этом объект передается функции как аргумент — переменная evt (в качестве имени переменной можно использовать также event или просто e). Чтобы получить доступ к аргументу, необходимо добавить к функции имя параметра. В пределах данной функции можно получить доступ к различным свойствам, используя точечный синтаксис. Когда функция вызывается, то объект события сохраняется в переменной evt .
Объект события имеет различные свойства, наиболее распространённые из них описаны в нижеприведенной таблице.

Таблица 1. Свойства объекта события
Свойство Описание
pageX Расстояние (px) от указателя мыши до левого края окна браузера
pageY Расстояние (px) от указателя мыши до верхнего края окна браузера
screenX Расстояние (px) от указателя мыши до левого края монитора
screenY Расстояние (px) от указателя мыши до верхнего края монитора
shiftKey TRUE, если когда происходило событие, была нажата клавиша SHIFT
which Используется для определения числового кода нажатой клавиши (вместе с shiftKey)
target Означает, что по объекту события щелкнули кнопкой мыши (например, для события click())
data Объект, использованный с функцией bind() для передачи данных функции, управляющей событием