Сочетание клавиш навигатора accesskey VS

Кажется, это повторяющийся сложный вопрос, но у меня до сих пор нет ни решения, ни обходного пути:

Есть ли способ перехватить клавиши доступа перед сочетанием клавиш?

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

Примечание: под accesskey я имею в виду accesskey атрибут html.

Любая идея? Flash-приложения могут это сделать, а как насчет JavaScript?


Например, вот доступный элемент управления:

<button onclick="alert('Hello');" accesskey="F">Alt+F to activate</button>

Когда я пытаюсь активировать его, я просто открываю меню Файл:'(

2 ответа

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

https://github.com/jeresig/jquery.hotkeys

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

Это, очевидно, будет зависеть от браузера. Для "большой тройки":

  • Firefox: ярлыки меню используют Alt, ярлыки "accesskey" используют ShiftAlt, поэтому конфликта нет.
  • Google Chrome: оба типа ярлыков используют Alt, а ярлыки меню имеют приоритет, но, если есть конфликт, ярлыки "accesskey" используют ShiftAlt, поэтому они по-прежнему доступны. См. Мой ответ на Отключение функций Alt (ярлыки) в Google Chrome для примера.
  • Internet Explorer: сочетания клавиш обоих типов используют Alt, а ярлыки "accesskey" имеют преимущество - именно то, что вы хотите:-).

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

Другие вопросы по тегам