2014-12-02 59 views
2
this.element.addEventListener('keydown', function(e) { 

    if ((e.keyCode || e.which) == 32) { 
     self.space_down(e); 
    } 
}, true); 

this.element.addEventListener('keyup', function(e) { 

    if ((e.keyCode || e.which) == 32) { 
     self.space_up(e); 
    } 
}, true); 

这是行不通的,为什么呢?iv'e类似的代码看鼠标事件,并能正常工作,有没有解决方案?的addEventListener KEYUP KEYDOWN与键码不工作

+1

定义“不工作”。你是说事件处理程序根本没有被调用,或者它没有进入'if'语句或什么? – Rhumborl 2014-12-02 09:04:09

回答

7

尝试绑定事件到documentwindow。如果某个元素不可聚焦且未聚焦,则键盘事件不会派发给它,而是派发到文档根目录(<body>)。

+0

记住非常重要和有用。另一个提示是,如果您在全局对象(例如'document.body')上监听'keyup' /'keydown'(或其他)事件,您可以区分源自聚焦元素的事件(例如'input'标签)并通过检查事件对象的'target'属性从事件处理程序中的这个全局对象。如果事件来自聚焦的元素,则“target”将是''=='''全局'对象(例如'document.body')。 – origo 2016-11-05 15:20:45