Сочетание клавиш навигатора 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 (и, возможно, это будет уязвимость безопасности), но у всех браузеров есть способы обработки этих конфликтов.