Что является наиболее отзывчивым способом заставить функцию JavaScript вызывать слушателя / нажатие клавиши

0

При использовании Javascript в браузере для создания легких игр, где пользователь может использовать свою клавиатуру для перемещения /etc, мне интересно, существует ли функциональная разница между использованием:

onkeydown="someFunction();"

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

addEventListener('keypress', function(e) { e.foo(); });

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

  • 1
    Как правило, вы должны использовать второй.
  • 0
    Лучше избегать JS в разметке, но не из-за производительности, я не сталкивался с очень многими случаями, когда у меня когда-либо был JS в разметке, это хорошо сказал Брэд ниже
Показать ещё 2 комментария
Теги:

4 ответа

2

Говоря в целом, это просто псевдоним другого. an on*="jsFunc()" - это просто вызов встроенного метода браузера для присоединения к вам события.

Тем не менее, стоит отметить, что почти всегда лучше держать оба (разметку и javascript) разделенными как можно больше. Имея это в виду, придерживайтесь привязки событий в тегах <script></script> и сохраняйте HTML для элемента пользовательского интерфейса.

  • 0
    Если я подключаюсь через прослушиватель и другой вызов для ключевого события, будет ли один вызов иметь приоритет над другим? будут ли два отрицать?
1

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

1

Во-первых, есть разница между keydown и keypress.

От Quirksmode:

keydown Пожары, когда пользователь нажимает клавишу. Он повторяется, пока пользователь удерживает нажатой клавишу.

keypress Пожары, когда вставлен фактический символ, например, ввод текста. Он повторяется, пока пользователь удерживает нажатой клавишу.

Таким образом, специальные клавиши, такие как alt или ctrl, не keypress события keypress ctrl, а также keypress события keydown.

Предполагая, что события равны, тогда да, они функционально эквивалентны, поскольку каждый элемент HTML в документе представлен в DOM.

Два основных преимущества присоединения события как свойства (object.addEventListener...), а не как атрибут:

  1. Разделение JavaScript и HTML. Представьте, что обработчик был намного сложнее - у вас была бы огромная строка в вашем HTML.

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

  • 0
    Так что, если я попытаюсь предотвратить действие по умолчанию нажатия клавиш (down = scrolldown, пробел = pagedown в FF), а затем назначить слушателя для нажатия клавиши, я просто отменю свою функцию?
0

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

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

  • 0
    Не могу ли я все еще использовать DOM для доступа к атрибуту и манипулирования оттуда?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню