У меня есть веб-приложение, в котором пользователи быстро реагируют на нервно-психологические раздражители с помощью клавиш Q
и P
(это нельзя изменить). Проблема в том, что иногда пользователи ошибочно перемещают палец, а затем нажимают клавишу tab
, и в этом случае фокус смещается с тела страницы (которое, как я понимаю, используется по умолчанию, с использованием activeElement
) в другое место в окне браузера ( вкладки, адресная строка, ...).
Я видел этот вопрос и действительно пытался использовать и event.preventDefault()
, и event.stopPropagation()
при перехвате события keydown, но это не не поможет Если, например, я добавляю оповещение - оно предупреждает, а затем продолжает менять фокус.
У кого-нибудь есть идеи, как этого избежать, кроме настройки браузера на полную блокировку ie tab
ключ?
код ссылки:
var ansFlag = false;
document.addEventListener("keydown", keydown);
function showTarget(){
draw(stimInfo());
run = setTimeout(advance,maxResponseTime);
ansFlag = true;
startTime = performance.now();
}
function keydown(e) {
e = e || window.event;
keyCode = e.keyCode;
if (ansFlag){
endTime = performance.now();
if ((keyCode == Q_KEY) || (keyCode == P_KEY)) {
response_given = true;
clearTimeout(run);
advance();
}
else{
return false;
}
}
else{
if(e.key == "Tab"){
e.preventDefault();
e.stopPropagation();
alert("tab!!!");
if(e.defaultPrevented){
console.log("saved the day!");
return;
}
}
else{
return false;
}
}
}