首页 > 其他分享 >移动端点击事件为什么会有延迟?延迟多长时间?有哪些方法可以解决?

移动端点击事件为什么会有延迟?延迟多长时间?有哪些方法可以解决?

时间:2024-11-23 09:01:50浏览次数:9  
标签:浏览器 点击 事件 touch 延迟 双击 多长时间

移动端点击事件的延迟,主要是因为浏览器需要区分用户是单击还是双击等其他手势。这段延迟通常是 300ms 左右,但具体时间取决于浏览器和设备。

以下是造成延迟的原因和一些解决方案:

原因:

  • 双击缩放(Double Tap to Zoom): 这是最主要的原因。移动浏览器为了识别双击缩放手势,会在用户第一次点击后等待一段时间(大约 300ms),看用户是否会进行第二次点击。如果用户在短时间内进行了第二次点击,则触发双击缩放;否则,触发单击事件。
  • 避免误触: 移动设备的触摸屏精度不如鼠标,用户可能会不小心点击到错误的元素。延迟可以减少这种误触的发生。
  • 滚动和点击的区分: 浏览器需要区分用户是想滚动页面还是点击某个元素。

解决方案:

  1. touchstarttouchend 事件: 使用 touchstarttouchend 事件代替 click 事件。这两个事件分别在手指触摸屏幕和离开屏幕时触发,没有 300ms 的延迟。需要注意的是,需要自己处理点击穿透的问题。

  2. FastClick 库 (已过时,不推荐): FastClick 是一个专门用于解决移动端点击延迟的库,它通过监听 touchstart 事件并阻止 click 事件的默认行为来消除延迟。 现在大部分浏览器已经优化了点击延迟,不再需要使用 FastClick,甚至可能导致其他问题。因此,不推荐使用。

  3. CSS 属性 touch-action 这个 CSS 属性可以控制浏览器对触摸事件的默认行为。将 touch-action 设置为 manipulation 可以禁用双击缩放和其他默认触摸行为,从而消除点击延迟。这是目前推荐的解决方案。

    .element {
        touch-action: manipulation;
    }
    
  4. Pointer Events: Pointer Events API 提供了一种统一的方式来处理鼠标、触摸和触笔输入。它也能够消除 300ms 的点击延迟,并且兼容性越来越好。

  5. <meta name="viewport" content="width=device-width"> 确保设置了正确的 viewport meta 标签。这虽然不会直接消除延迟,但可以确保页面以正确的比例显示,避免一些潜在的触摸问题。

总结和最佳实践:

  • 首选 touch-action: manipulation; 这是最简单、最有效且兼容性最好的解决方案。
  • 考虑 Pointer Events: 如果需要更高级的输入处理,Pointer Events 是一个不错的选择。
  • 避免使用 FastClick: 它已经过时,并且可能导致其他问题。
  • 使用 touchstarttouchend 需要谨慎: 需要自行处理点击穿透等问题。

通过以上方法,可以有效地解决移动端点击事件的延迟问题,提升用户体验。 选择哪种方法取决于项目的具体需求和兼容性要求。 优先推荐使用 touch-action: manipulation;

标签:浏览器,点击,事件,touch,延迟,双击,多长时间
From: https://www.cnblogs.com/ai888/p/18564091

相关文章

  • 延迟队列的安装步骤
    RabbitMQ中的延迟队列(DelayedQueue)是一种特殊的队列,用于在消息被发送后延迟一段时间再投递给消费者。它在许多场景中非常有用,例如需要定时执行的任务、限流、重试机制等。使用场景定时任务:例如发送提醒邮件或通知,确保在特定时间后再执行。限流:控制请求速率,防止瞬时高并......
  • 使用RabbitMQ实现延迟消息的完整指南
    在分布式系统中,消息队列通常用于解耦服务,RabbitMQ是一个广泛使用的消息队列服务。延迟消息(也称为延时队列或TTL消息)是一种常见的场景应用,特别适合处理某些任务在一段时间后执行的需求,如订单超时处理、延时通知等。本文将以具体代码为例,展示如何使用RabbitMQ来实现延迟消息处理......
  • matlab点击实时绘制bezier曲线
    贝塞尔曲线的原理贝塞尔曲线是通过一组控制点定义的参数曲线。曲线不会直接穿过这些点,但这些点会影响曲线的形状。控制点确定了曲线的弯曲程度和方向。贝塞尔曲线的数学公式基于伯恩斯坦多项式(BernsteinPolynomials)。对于一个n次的贝塞尔曲线,它由n+1个控制点​定义。曲线......
  • 记录Redis+MQ延迟双删保证缓存一致性
    场景描述在博客系统中,用户可以给博客点赞或者评论,这些操作需要更新数据库中的数据,同时要保证缓存中的博客信息与数据库保持一致。为了提高性能,博客数据会存放在Redis缓存中。但当有大量用户同事点赞或是评论时,缓存和数据库中的数据可能出现不一致。何谓延迟双删?延迟双删......
  • Vue3 - 详细实现移动端H5网页调用摄像头拍照功能,微信公众号网页h5页面打开本地摄像头
    前言PC网站端,请访问这篇文章。在vue3手机移动端开发中,详解H5页面/微信公众号网页调用浏览器摄像头并拍照完整示例,在手机浏览器上开启摄像头并拍照上传服务器或保存到本地功能(实时预览使用图片临时路径或base64数据),切换转换前置摄像头与后置摄像头,vue3手机H5打开摄像......
  • 【开题报告】基于django+vue基于智能点击推荐的在线购物商城系统(论文+源码)计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为现代商业活动的重要组成部分。在线购物商城作为电子商务的核心平台,不仅为消费者提供了便捷、高效......
  • 专利申请的流程是怎样的?需经哪几个阶段?最快多长时间能获得通过?
    发明专利的主要流程:受理、初步审查、专利公布(申请日起18个月)、提出实质审查请求(申请日起3年内)、实质审查、授权或驳回。通常审查周期:1~2年(从实质审查开始到结束)其他程序:提前公开优先审查(部分技术领域)--1年快速预审(部分地区及技术领域)-2、3个月实用新型与外观设计的主要......
  • DevExpress WinForms中文教程:Data Grid - 如何点击获取信息?
    在使用DevExpressWinForms的DataGrid之类控件时,可能需要实现自定义用户交互,例如显示数据行的上下文菜单,或者在双击一行时调用编辑表单。在这些情况下,您需要在指定的坐标处标识网格元素。在本教程中,您将学习如何获取此信息。首先将显示工具提示,指示当前在鼠标光标下的是哪个......
  • 【电商搜索】现代工业级电商搜索技术-中科大-利用半监督学习改进非点击样本的转化率预
    【电商搜索】现代工业级电商搜索技术-中科大-利用半监督学习改进非点击样本的转化率预测0.论文信息RecSys24:UtilizingNon-clickSamplesviaSemi-supervisedLearningforConversionRatePrediction@inproceedings{huang2024utilizing,title={UtilizingNon-cli......
  • WPF 实现点击空白位置让TextBox等失焦
    在使用WPF开发桌面应用时,可能会遇到一个常见需求:当用户在界面上点击某个控件之外的空白区域时,当前获得焦点的控件(例如TextBox、ComboBox等)自动失去焦点。这种体验在一些场景下非常实用,尤其是当你希望用户在点击其他地方后完成对输入控件的编辑操作时。本文将介绍如何在......