Есть ли способ предотвратить активацию HTML accesskey=""?
Я старался preventDefault()
но у меня не было успеха. Я что-то упускаю?
Я бы попытался отключить его глобально, если это возможно (например, регистрация событий на window
)
3 ответа
Кажется, нет способа остановить запуск события. Похоже, единственной альтернативой является временное удаление атрибутов ключа доступа, пока вы не хотите, чтобы они работали. Вот что должен сделать пользовательский интерфейс jQuery для модальных диалогов.
Вот код из этой темы:
$("#boxA-dialog").dialog({
autoOpen: false,
modal: true,
height: 400,
width: 300,
open: function(event, ui) {
ak = $('[accesskey]').each(function() {
$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
})
},
close: function(event, ui) {
ak.each(function() {
$(this).attr('accesskey', $(this).data('ak'))
})
}
});
Как вы можете видеть, он сохраняет атрибуты accesskey в данных jQuery перед их удалением:
$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
а затем восстановить их из данных:
$(this).attr('accesskey', $(this).data('ak'))
Мне было бы интересно найти решение, которое на самом деле предотвращает событие, а не использовать этот обходной путь.
Используя предыдущий ответ, вы можете использовать этот трюк, чтобы "удалить" все опции "accesskey" со страницы.
$('[accesskey*=]').attr('accesskey','');
Просто установите все ключи доступа на странице даром.
Если я правильно понимаю вашу проблему, вы можете попробовать это.
$('[accesskey*=]').focus(function(e) {
// disable accesskey functionality
});
$('[accesskey*=]').blur(function(e) {
// reenable accesskey functionality
});