javascript - HTML5;在 Javascript 中检测物理键盘的存在

标签 javascript html web-applications mobile webkit

检测用户是否有物理键盘的最可靠方法是什么?

一个想法是,由于没有物理键盘,window.onkeydown 可以是undefined(而不是null)。但是由于虚拟键盘,我认为情况并非如此。不过我没有测试。

我的目标是拥有 Online Timerinput[type='number']如果用户没有键盘,将替换为滚轮选择器。

最佳答案

对于像 Microsoft Surface 这样带有键盘、鼠标和触摸屏的设备,这真的很棘手。您可以在任何给定时间混合所有 3 种输入模式,或添加其他输入法,如手写笔。

Microsoft 正在采用将输入事件抽象为“指针事件”的方法。此款has been submitted to the W3C .这应该让您了解管理输入的趋势。

不过,我发现查看触摸是否可用并在假定(如果可用)用户至少会在某些时候使用触摸输入的情况下进行操作很方便。这可能导致设计决策消除完全不适合触摸的东西,即使这可能意味着在鼠标/键盘功能上做出妥协。

在您的具体情况下,我会仔细研究您是否需要用自定义控件替换 input[type=number]。大多数触摸设备都相当现代,并且许多具有标准 HTML 输入的自定义、触摸友好版本。

还要记住 native 控件可能支持“开箱即用”的可访问性场景。

如果您决定实现自定义控件,那么我会建议检测触摸功能并显示您的自定义控件是否存在其他输入机制。这意味着确保自定义控件(至少)对触摸/键盘/鼠标友好。

这是我当前的触摸测试(免责声明它明天可能会崩溃,当然还没有在所有设备上进行测试):

var supportsTouch = ("ontouchstart" in window) || window.navigator.msMaxTouchPoints > 0;

关于javascript - HTML5;在 Javascript 中检测物理键盘的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203050/

相关文章:

java - 在 IntelliJ IDEA 14.1.0 中启用 Web 应用程序支持

javascript - 使用 Vanilla javascript关闭多个编号的div

javascript - 嵌套 Accordion 不会以 h2 作为链接关闭

javascript - 如何防止图像离开html中的区域

html - 在没有javascript的情况下单击表格行时切换复选框

php - webapp 的 Linux (ubuntu) 权限 - 独特情况

javascript - 如何获取推文的年龄?

javascript - 水平居中 float div

URL 中的 HTML 基本身份验证

javascript - 单击以缩放 Canvas 上插入的图像剪辑它,片段jquery,html5