关键字事件中iOS Safari中的e.keyCode

时间:2015-03-09 14:15:22

标签: javascript ios mobile-safari

更新

到目前为止,我一直在使用物理键盘在模拟器中尝试。这导致了这个问题。但是,使用软键盘可以根据需要使用。 keyup事件定义明确keyCode


请在this pen

找到代码

<input type="text" id="test">

var test = document.getElementById('test'); test.addEventListener('keyup', function(e) { alert(e.keyCode); });

iOS safari显示0作为任何按键(keyup事件)的keyCode。任何指针都会非常有用。

更新

e.keyCode以及e.which适用于keypress事件,但我无法使用keyup事件。

3 个答案:

答案 0 :(得分:6)

iOS Safari中的e.keyCode事件,实际设备和模拟器中都存在

keyup。 但是,在模拟器中,如果使用物理键盘,则e.keyCode设置为zeroenter image description here

答案 1 :(得分:4)

使用e.which代替e.keyCode

修改:要规范化此值,您可以使用e.keyCode || e.which

答案 2 :(得分:0)

我可以使用{ path: '', redirectTo: 'create', pathMatch : 'full' } 使它与keyupkeydown一起使用,它返回按下的键(例如e.key/)。

我能够通过使用远程调试器检查事件对象来弄清这一点。

我签入了最新的Chrome,Firefox,iOS Safari和macOS Safari,它们都通过a报告密钥。

编辑:

e.keykeyup现在无法使用。我想我用远程调试器之类的东西来解决问题。但是,我已经找到了一种适用于我的用例的替代解决方案。

我想在按keydown时集中输入。我采用了绑定到/的上述解决方案,但是由于未触发keypress事件,因此将键输入到输入中。只需致电keyup就可以很好地解决我的问题。我仍然可以在e.preventDefault()上与e.key == '/'事件进行比赛!