js键盘监听为什么在 input 输入框失效?
我原本想用python实现键盘监听。最后选择用js实现,我的初步代码如下
function keypress(){
var key = document.getElementsByTagName('body')[0];
key.onkeypress = function(ev){
alert(ev.keyCode);
}
}
能够简单实现键盘监听了,可是我发现如果是键盘输入框监听就会失效,请问这是什么原因?
应该是网站的原因,我在豆瓣输入框也是可以捕捉到,而google 输入框就不行...
此外我想了解了解,监听的工作原理是什么?从网上查资料得知键盘一般由按键、导电塑胶、编码器以及接口电路组成,接口电路产生信号的一系列过程都是硬件部分处理,我猜测js键盘监听应该是监听这个信号,那么一般键盘监听来说,是怎么样处理这个信号的?js的onkeypress
事件监听的原理又是什么?这个有没有源码可以看?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
onkeypress 只有在产生可打印字符时才会发生,且你写的代码不兼容IE低版本
谢邀。不知道有没有误解题主的意思,首先看了下你的代码,监听键盘的
keypress
事件,代码看上去是没问题的,于是我到谷歌的输入框里测试了一下:在
chrome
下,输入框内输入后,Keypress
事件被捕捉到了,并没有出现题主所说的情况。:)另外建议题主用
keydown
事件,因为keydown
与keypress
相比能捕捉更多按键(当然,我不太清楚题主你的需求,keypress
也有比keydown
优异的地方)。测试如下:上述代码依然可以在谷歌输入框中捕获到键盘事件。