Доступ к window.event.altkey в setInterval
У меня есть следующий код:
function optionkey()
{
e = window.event;
if( e.altKey )
{
return "down";
}
else
{
return "up";
}
}
interval = setInterval(function(){
if( optionkey() == "down" ) {
clearInterval(interval);
alert( 5 );
}
}, 100);
В основном код должен работать alert(5)
когда пользователь нажимает ключ опции, но вместо этого я получаю множество ошибок: Uncaught TypeError: Cannot read property 'altKey' of undefined
Может кто-нибудь сказать мне, почему он это делает и как это исправить?
Благодарю.
2 ответа
Пожалуйста, дайте мне знать, если я неверно истолковал ваши потребности, но если вы хотите, чтобы при нажатии клавиши срабатывало оповещение, вам нужно создать прослушиватель событий для onkeydown
вот так
window.onkeydown = function ( e ) {
if(e.altKey){
alert(5);
}
}
Прежде всего event.altKey
может быть обнаружен только на событиях нажатия клавиш (ввода), таких как keydown
а также keyup
, Однако вызов функции из setInterval
не вызовет altkey
, Вам нужно будет отловить это в обработчике событий и передать его дальше.
function optionkey()
{
if( window['globalAltKey'])
{
return "down";
}
else
{
return "up";
}
}
interval = setInterval(function(){
if( optionkey() == "down" ) {
clearInterval(interval);
alert( 5 );
}
}, 100);
window.addEventListener("keydown", function(e){
if (e.altKey)
{
globalAltKey = true;
}
else
{
globalAltKey = false;
}
}, false)
Теперь интервал все еще будет проверять, вернется ли optionkey() вниз или вверх. Только когда пользователь нажимает alt, это активирует предупреждение.
Я не знаю, почему вы выбрали этот подход, вы можете просто прикрепить обработчик нажатия к кнопке и использовать предоставленное мной событие нажатия клавиши, чтобы проверить, нажата ли клавиша alt глобально.