在setInterval中访问window.event.altkey
Accessing window.event.altkey in a 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);
基本上,当用户按下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键是否被全局按下。
相关文章:
- issue with FB.Event.subscribe
- Angularjs :$routeChangeStart event
- event.prventDefault()持续多久
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- KeyDown event for CKeditor
- Javascript events: window.event vs argument reference (funct
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- <td> focusin event .addclass
- event.preventDefault阻止ajax调用
- google.maps.event.addDomListener(window, 'load', fun
- jQuery event.target is_a_child_of(element)
- event.stopPropagation()在firefox javascript中不起作用
- asp.net text onkeyup event
- 如何从ondragend获取正确的event.pageX
- 面料:“;鼠标:向下”;在event.target中未返回对象
- 使用event.target.classlist区分按钮颜色
- event.keycode vs event.which
- 将字符串作为参数传递给函数onclick event jquery
- 在setInterval中访问window.event.altkey
- event.altKey在chrome和IE中不起作用