我有以下代码:
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
有人能告诉我它为什么会这样做以及如何修复吗?
谢谢。
jsfiddle
如果我误解了你的需求,请告诉我,但如果你想在按键时触发警报,你需要为onkeydown
创建一个事件侦听器,就像一样
window.onkeydown = function ( e ) {
if(e.altKey){
alert(5);
}
}
首先,只能在按键(输入)事件(如keydown
和keyup
)上检测到event.altKey
。然而,从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()是返回down还是返回up。只有当用户单击alt时,才会触发警报。
我不知道你为什么选择这种方法,你可以简单地在按钮上附加一个点击处理程序,并使用我提供的keydown事件来检查alt键是否被全局按下。