0

我有以下代码:

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

谁能告诉我为什么会这样以及如何解决它?

谢谢。

jsfiddle

4

2 回答 2

0

首先,event.altKey只能在按键(输入)事件上检测到keydownkeyup。然而,调用一个函数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 键是否被全局按下。

于 2015-02-11T18:10:47.797 回答
0

如果我误解了您的需求,请告诉我,但是如果您希望在按下键时触发警报,您​​需要创建一个事件侦听器,onkeydown像这样

window.onkeydown = function ( e ) {
    if(e.altKey){
        alert(5);
    }
}
于 2015-02-11T18:08:44.423 回答