Является ли onClick Universal для кнопок мыши? - PullRequest
3 голосов
/ 30 января 2012

Я заметил, что Google использует onMouseDown в своих результатах поиска - для веб-отслеживания, поиска ключевых слов и рейтинга и т. Д.

Я хочу знать, что лучше, onClick или onMouseDown - или они оба поддерживают все перечисленное ниже: средняя кнопка, щелчок левой кнопкой мыши, щелчок правой кнопкой мыши (другие кнопки, такие как мышь Gamer).Поддерживаются ли они во всех браузерах, в том числе на мобильных телефонах, планшетах и ​​во всех других операционных системах?Крайне важно, чтобы функция загружалась первой. HREF оставлено для SEO и других преимуществ пользовательского интерфейса / UX в случае сбоя JavaScript.

<a href="http://www.site.com" onclick="doMyFunctionFirst();">
JavaScript loaded before the href URL
</a>

Или

<a href="http://www.site.com" onMousedown="doMyFunctionFirst();">
JavaScript loaded before the href URL
</a>

Или, на первый взгляд, очевидный (Я не делаю этого, так как каждый символ для пробела имеет значение для моего клиента)

<a href="http://www.site.com" onclick="doMyFunctionFirst();" onMouseDown="doMyFunctionFirst();">
JavaScript loaded before the href URL
</a>

Ответы [ 3 ]

4 голосов
/ 30 января 2012

Примечательно, что событие click сработает, если вы перейдете по ссылке и нажмете Enter, но mousedown / mouseup не будет.

1 голос
/ 30 января 2012

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

0 голосов
/ 30 января 2012

Спецификация W3C , похоже, не определяет , должны ли события запускаться для всех кнопок, только то, что нажатая кнопка должна быть указана в свойстве "button" объекта события.По крайней мере, в Chrome «щелчок» срабатывает не за исключением основной (в моем случае левой) кнопки мыши. Quirksmode имеет полезную тестовую систему , чтобы проверить это.

Onclick, onmousedown и onmouseup представляют различные варианты поведения, ни одно из которых не является «лучше»: «щелчок» - это нажатие, а затемотпускание кнопки, mousedown - «вниз», а mouseup - «релиз».Обычно это будет уместно, если вы выполняли некоторые операции перетаскивания.

Документация MDN указывает, что onclick срабатывает после mousedown и mouseup.

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

HREF оставлен для SEO и других преимуществ UI / UX в случае сбоя javascript.

Если обработчик событий выполняет запрос на перенаправление / AJAX или аналогичный,вам следует использовать метод protectDefault , если вы не хотите, чтобы браузер переходил по ссылке после запуска вашего события.

...