我有以下代码:
function optionkey()
{
e = window.event;
if( e.altKey )
{
return "down";
}
else
{
return "up";
}
}
interval = setInterval(function(){
if( optionkey() == "down" ) {
clearInterval(interval);
alert( 5 );
}
}, 100);
当用户按下optionkey时,代码应该运行alert(5)
,但我得到了大量错误:Uncaught TypeError: Cannot read property 'altKey' of undefined
任何人都可以告诉我为什么会这样做以及如何解决它?
感谢。
答案 0 :(得分:0)
如果我误解了您的需求,请告诉我,但如果您想在按键时触发警报,则需要为onkeydown
创建事件监听器
window.onkeydown = function ( e ) {
if(e.altKey){
alert(5);
}
}
答案 1 :(得分:0)
首先,event.altKey
只能在 keypress (输入)事件中检测到,例如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 时,才会触发警报。
我不知道你选择这种方法的原因,你可以简单地将一个点击处理程序附加到一个按钮,并使用我提供的keydown事件来检查alt键是否被全局按下。