首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript检测硬件键盘的存在?

如何使用javascript检测硬件键盘的存在?
EN

Stack Overflow用户
提问于 2013-09-19 03:01:22
回答 6查看 10.5K关注 0票数 26

使用javascript检测硬件键盘存在的最佳跨浏览器和跨平台方法是什么?

EN

回答 6

Stack Overflow用户

发布于 2016-02-13 11:22:42

这可能是一个老问题,但几个月前,我自己也在寻找解决方案。我正在构建一个消息传递系统,当有人在物理键盘上点击Return时,它应该会发送消息,但当有人在虚拟键盘上点击Return时,它会插入一个换行符。我解决这个问题的方法是计算keydownkeyup事件之间的时间,并获得Return被命中时的平均值。

我终于抽出时间把它记录在我的博客here上。

票数 14
EN

Stack Overflow用户

发布于 2013-09-19 03:44:19

你能试试理论上相反的方法吗?与其尝试检测键盘硬件,为什么不尝试检测触摸屏呢?使用ontouchstart事件;

代码语言:javascript
复制
if ('ontouchstart' in document.documentElement) {
    // show icon
}
票数 8
EN

Stack Overflow用户

发布于 2013-09-19 03:25:01

JS中的键盘可以通过浏览器API访问,这些API委托给OS,并且无法判断是否存在物理键盘。我现在可以割断物理键盘的连接线,打开虚拟键盘,用鼠标点击屏幕上的按钮,浏览器仍然会触发脚本正在监听的每个键盘事件。从浏览器/JS的角度来看,虚拟键盘和物理键盘没有什么区别。

“存在”到底是什么意思呢?如果我的手机有触摸屏和滑出式键盘,你认为浏览器会触发某种"keboardIn"/"keyboardOut“事件吗?与电缆插入/输出相同?:)

如果您的应用程序绝对需要物理键盘,只需通知/询问用户即可。

编辑-由OP澄清后:

你知道facebook上的聊天吗?你只需按"Enter“键就可以发送消息,我必须向没有键盘按钮的用户显示"Enter”键。

因此,只需创建一个带有文本输入的表单,并侦听输入/表单事件。大多数(每个?)软键盘上有某种“完成”、“就绪”或类似的按钮。您不需要知道"keyCode“是否等于"13",但可以检测用户是否有意提交他输入的内容。或者,作为最后的手段,检测到我启用了触摸的设备,然后显示按钮。( if('ontouchstart' in document.documentElement)/* show touch sbmit button */ )

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18880236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档