javascript - 如何减少 JavaScript 触摸输入的触摸延迟?

标签 javascript jquery css html touch

我正在尝试使用 HTML5 和 JavaScript 为 ChromeOS 构建一个销售点应用。我使用 Materialise 和 jQuery 作为前端。当我尝试使用屏幕数字键盘快速输入数字时,有时数字会被跳过。一个很好的例子是尝试输入 1752703,因为这是我当前工作的员工 ID。尽管 CSS 效果显示我推送了所有数字(链式 react ),但我最终可能会得到类似 17203 的内容,而不是完整的数字。

有什么方法可以提高触摸性能吗?这是我使用的屏幕类型吗?什么可能导致这种情况发生?如果是因为我的 Chromebook 是电容式的,那没什么大不了的,因为我可以将其部署在任何可以运行 Chromium 操作系统的设备上。但如果这是我可以改进的程序化内容,那么这就是我想要采取的第一步。

这是我用来输入整数的基本代码:

$(".numBtn").click(function(){
 input(Number($(this).text()));
});

这是一个实际的例子(对缺乏样式表示歉意):

Live Demo

最佳答案

第一

问题似乎不是设备本身,而是支持捏缩放的触摸设备的效果。

在大多数此类设备上,默认情况下有 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

(2): https://github.com/filamentgroup/tappy/#why

关于javascript - 如何减少 JavaScript 触摸输入的触摸延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40925213/

相关文章:

javascript - 正确重叠路径上的结束标记

javascript - 从 iframe 调用后菜单无法正确显示

Javascript 游戏 : Move character while key down

javascript - ASP :hyperlink is not directing to the linked url

html - 将 DIV 向上移动一行

html - 如何让移动图像隐藏在 Gmail 中?

jquery - SB Admin 2 侧边栏菜单在加载时扩展

javascript - 如何更改通过点击功能添加的img src?

javascript - 从脚本外部调用内部Cesium函数

javascript - 日期选择器上的 onSelect 不起作用