Атрибут accesskey тега <dialog>
Описание
Атрибут accesskey позволяет назначить клавишу быстрого доступа для элемента <dialog>. При нажатии комбинации клавиш (обычно Alt + ключ в Windows/Linux или Control + ключ в Mac) диалоговое окно будет активировано.
<button onclick="document.getElementById('helpDialog').showModal()">
Справка (Alt+H)
</button>
<dialog id="helpDialog" accesskey="h">
<h3>Справка по системе</h3>
<p>Здесь содержится справочная информация...</p>
<button onclick="this.closest('dialog').close()">Закрыть</button>
</dialog>
Особенности работы:
| Платформа | Комбинация клавиш | Примечание |
|---|---|---|
| Windows/Linux | Alt + accesskey |
В Firefox: Alt + Shift + accesskey |
| macOS | Control + Option + accesskey |
В Safari: Control + Alt + accesskey |
| Chrome OS | Alt + accesskey |
Рекомендуемые клавиши:
<!-- 1. Первая буква функции -->
<dialog id="searchDlg" accesskey="s">Поиск...</dialog>
<!-- 2. Цифры для нумерованных диалогов -->
<dialog id="step1" accesskey="1">Шаг 1</dialog>
<!-- 3. Избегайте конфликтов с браузером -->
<dialog id="printDlg" accesskey="p">
<!-- Не используйте 'p' если мешает работе браузера -->
Печать документа
</dialog>
Программное управление:
<script>
// Назначение accesskey через JavaScript
document.getElementById('settingsDialog').accessKey = 't';
// Показать все назначенные клавиши (для отладки)
function showAccessKeys() {
const dialogs = document.querySelectorAll('dialog[accesskey]');
dialogs.forEach(dlg => {
console.log(`Диалог ${dlg.id}: ${dlg.accessKey}`);
});
}
</script>
Ограничения и проблемы:
- Конфликты с комбинациями клавиш браузера
- Нет стандартного визуального отображения подсказки
- Разные комбинации на разных платформах
- Ограниченная поддержка на мобильных устройствах
Решение для отображения подсказок:
<style>
dialog[accesskey]::after {
content: " [" attr(accesskey) "]";
font-size: 0.8em;
color: #666;
}
</style>
<dialog id="contactDlg" accesskey="c">
Контактная форма
<button onclick="this.closest('dialog').close()">Закрыть</button>
</dialog>
Лучшие практики:
- Используйте одну букву или цифру в нижнем регистре
- Избегайте часто используемых браузерных комбинаций (F, E, P и др.)
- Дублируйте функциональность другими способами (кнопки, меню)
- Документируйте горячие клавиши для пользователей
- Тестируйте на разных платформах
Совместимость:
- Поддерживается всеми современными браузерами
- Работает только с элементами, которые могут получать фокус
- Может потребовать JavaScript для полной функциональности
Примечание: Хотя атрибут accesskey может улучшить доступность для опытных пользователей, не стоит полагаться на него как на единственный способ взаимодействия. Всегда обеспечивайте альтернативные методы открытия диалоговых окон.