Tooltipster поддерживает полное управление подсказками с помощью клавиатуры, что особенно важно для доступности (accessibility) веб-приложений. Правильная настройка клавиатурного взаимодействия обеспечивает удобство для пользователей, которые не используют мышь.
Tooltipster позволяет обрабатывать стандартные события клавиатуры через объект trigger и дополнительные опции. Основные клавиши, задействуемые в работе подсказок:
Использование этих клавиш зависит от настроек trigger и interactive.
triggerОпция trigger определяет, каким образом подсказка
активируется. Для клавиатуры важны следующие значения:
Пример инициализации:
$('.tooltip').tooltipster({
trigger: 'click',
interactive: true,
functionReady: function(instance, helper){
// Установка фокуса на первый интерактивный элемент подсказки
$(helper.tooltip).find('button, a, input').first().focus();
}
});
interactiveinteractive: true позволяет пользователю взаимодействовать с содержимым подсказки, включая формы, кнопки и ссылки, без закрытия подсказки при уходе мыши. При работе с клавиатурой это критично, чтобы фокус оставался внутри подсказки, пока пользователь не завершит взаимодействие.
$('.tooltip').tooltipster({
interactive: true,
trigger: 'click'
});
Для сложных подсказок с несколькими интерактивными элементами можно вручную управлять фокусом с помощью событий keydown:
$('.tooltip').on('keydown', function(e){
const instance = $(this).tooltipster('instance');
if (e.key === 'Escape') {
instance.close();
$(this).focus(); // возврат фокуса на элемент
}
});
Для создания циклической навигации внутри подсказки можно использовать:
$(helper.tooltip).on('keydown', function(e){
const focusable = $(this).find('button, a, input');
let index = focusable.index(document.activeElement);
if (e.key === 'Tab') {
e.preventDefault();
if (e.shiftKey) {
index = (index - 1 + focusable.length) % focusable.length;
} else {
index = (index + 1) % focusable.length;
}
focusable.eq(index).focus();
}
});
Этот подход гарантирует, что пользователи клавиатуры не потеряются при перемещении по интерактивной подсказке.
Tooltipster поддерживает атрибуты aria для корректной работы с экранными считывателями:
aria-describedby на элементе-инициаторе указывает на ID
подсказки.role="tooltip" на контейнере подсказки.aria-hidden="true" при
закрытии и aria-hidden="false" при открытии.Пример:
$('.tooltip').tooltipster({
content: $('<span id="tooltip1">Подсказка с формой</span>'),
interactive: true,
functionReady: function(instance, helper){
$(helper.origin).attr('aria-describedby', 'tooltip1');
}
});
Tooltipster позволяет комбинировать мышиную навигацию и клавиатурное управление без конфликтов:
$('.tooltip').tooltipster({
trigger: 'hover',
interactive: true,
functionInit: function(instance, helper){
$(helper.origin).on('focus', function(){
instance.open();
}).on('blur', function(){
instance.close();
});
}
});
interactive: true для интерактивных
подсказок.Эти механизмы делают Tooltipster полностью управляемым с клавиатуры и соответствуют современным стандартам веб-доступности.