使用javascript检测硬件键盘存在的最佳跨浏览器和跨平台方法是什么?
发布于 2016-02-13 11:22:42
这可能是一个老问题,但几个月前,我自己也在寻找解决方案。我正在构建一个消息传递系统,当有人在物理键盘上点击Return时,它应该会发送消息,但当有人在虚拟键盘上点击Return时,它会插入一个换行符。我解决这个问题的方法是计算keydown和keyup事件之间的时间,并获得Return被命中时的平均值。
我终于抽出时间把它记录在我的博客here上。
发布于 2013-09-19 03:44:19
你能试试理论上相反的方法吗?与其尝试检测键盘硬件,为什么不尝试检测触摸屏呢?使用ontouchstart事件;
if ('ontouchstart' in document.documentElement) {
// show icon
}发布于 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 */ )
https://stackoverflow.com/questions/18880236
复制相似问题