e.keyCode 在 iOS Safari 中的 keyup 事件
e.keyCode in iOS Safari on keyup event
更新
到目前为止,我一直在模拟器中尝试使用物理键盘。那是造成问题的原因。但是,使用软键盘,它可以按需要工作。 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
事件)。任何指针都会非常有帮助。
更新
e.keyCode
以及 e.which
适用于 keypress
事件,但我无法使其适用于 keyup
事件。
使用 e.which
而不是 e.keyCode
。
编辑:要标准化此值,您可以使用e.keyCode || e.which
.
e.keyCode
存在于 iOS Safari 中的 keyup
事件中,在实际设备和模拟器中。
但是在模拟器中,如果使用物理键盘,e.keyCode
设置为zero
。
我能够通过使用 e.key
来使它与 keyup
和 keydown
一起工作,其中 returns 按下的键(例如 /
或 a
).
我能够通过使用远程调试器检查事件对象来解决这个问题。
我检查了最新的 Chrome、Firefox、iOS Safari 和 macOS Safari,它们都通过 e.key
报告密钥。
编辑:
keyup
和 keydown
现在不工作。我想我用远程调试器之类的东西出了问题。但是,我找到了适用于我的用例的替代解决方案。
我想在按下 /
时聚焦输入。我采用了上述绑定到 keypress
的解决方案,但由于 keyup
事件尚未触发,因此密钥已输入到输入中。只需调用 e.preventDefault()
就很好地解决了我的问题。我仍然可以在 e.key == '/'
上匹配 keypress
事件!
更新
到目前为止,我一直在模拟器中尝试使用物理键盘。那是造成问题的原因。但是,使用软键盘,它可以按需要工作。 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
事件)。任何指针都会非常有帮助。
更新
e.keyCode
以及 e.which
适用于 keypress
事件,但我无法使其适用于 keyup
事件。
使用 e.which
而不是 e.keyCode
。
编辑:要标准化此值,您可以使用e.keyCode || e.which
.
e.keyCode
存在于 iOS Safari 中的 keyup
事件中,在实际设备和模拟器中。
但是在模拟器中,如果使用物理键盘,e.keyCode
设置为zero
。
我能够通过使用 e.key
来使它与 keyup
和 keydown
一起工作,其中 returns 按下的键(例如 /
或 a
).
我能够通过使用远程调试器检查事件对象来解决这个问题。
我检查了最新的 Chrome、Firefox、iOS Safari 和 macOS Safari,它们都通过 e.key
报告密钥。
编辑:
keyup
和 keydown
现在不工作。我想我用远程调试器之类的东西出了问题。但是,我找到了适用于我的用例的替代解决方案。
我想在按下 /
时聚焦输入。我采用了上述绑定到 keypress
的解决方案,但由于 keyup
事件尚未触发,因此密钥已输入到输入中。只需调用 e.preventDefault()
就很好地解决了我的问题。我仍然可以在 e.key == '/'
上匹配 keypress
事件!