我正在尝试使用 HTML5 和 JavaScript 为 ChromeOS 构建一个销售点应用。我使用 Materialise 和 jQuery 作为前端。当我尝试使用屏幕数字键盘快速输入数字时,有时数字会被跳过。一个很好的例子是尝试输入 1752703,因为这是我当前工作的员工 ID。尽管 CSS 效果显示我推送了所有数字(链式 react ),但我最终可能会得到类似 17203 的内容,而不是完整的数字。
有什么方法可以提高触摸性能吗?这是我使用的屏幕类型吗?什么可能导致这种情况发生?如果是因为我的 Chromebook 是电容式的,那没什么大不了的,因为我可以将其部署在任何可以运行 Chromium 操作系统的设备上。但如果这是我可以改进的程序化内容,那么这就是我想要采取的第一步。
这是我用来输入整数的基本代码:
$(".numBtn").click(function(){
input(Number($(this).text()));
});
这是一个实际的例子(对缺乏样式表示歉意):
最佳答案
第一
问题似乎不是设备本身,而是支持捏缩放的触摸设备的效果。
在大多数此类设备上,默认情况下有 300-350 毫秒的点击延迟,这允许大多数用户双击,或者如上所述,捏合缩放。
Google 在 2014 年针对此问题提出了解决方案,当时他们通过仍然保持捏合缩放功能打开来消除了这种延迟。 (1)
对此问题的快速修复只需 <head>
中的一行代码即可
<meta name="viewport" content="width=device-width">
此元标记仅通过告诉浏览器“这就是我需要的显示方式,因此不需要缩放页面”来禁用您网站的捏合缩放。其目的主要是为了让响应式设计的网站有更好的用户体验。
我已经使用新的元标记测试了您的网站,延迟似乎消失了。当您快速点击时,仍然会有很小的延迟,但大多数用户无法做到这么快。
第二个
另一种潜在的解决方案是使用名为 Tappy 的插件,它用点击事件取代点击事件, promise “它将允许您立即在触摸设备上执行代码,消除点击事件所带来的 300 毫秒延迟 (2) 。”
插件存储库可以在[此处][3]找到,您还可以在其中查看实现说明 - 尤其是这个,这是一个修改版本,将点击事件绑定(bind)到所有 <a>
元素:
$(document).ready(function(){
$("a").each(function(){
$(this).bind("tap", function(){
window.location.href = this.href;
});
});
});
请注意,您需要 jQuery 才能使用此插件。如果您不使用 jQuery,请写一条评论,我将提供一个普通的 JavaScript(潜在)解决方案。
<小时/>引用文献
(1): https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-away
关于javascript - 如何减少 JavaScript 触摸输入的触摸延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40925213/