Web移动端-touch事件

2023-11-18

一、引入

在一个项目demo中,实现单指触控卡片的向任意方向的拖动效果。网上没有现成的插件,所以只好原生js来写。产品要求需要禁止掉多点触控。这个过程很让人头疼,试了很多方法,都不太实现。后来仔细研究,测试了一下移动端的三个常用事件。

二、事件

移动端的触摸事件常用的有一下三种:

touchstart:当有新手指触控到绑定的元素,会触发一次事件。

touchmove:当有手指放绑定的元素上会一直触发,从触发条件准确的说只有手指移动时才触发。但是经过测试,这一项检测十分灵敏,人为手指保持不动,系统也会侦测到细小的移动。所以会一直触发。

touchend:当有手指从绑定元素上抬起,会触发一次。

代码:

change.addEventListener('touchstart',function(e){
    if (e.touches.length != 1) {
    	//执行的代码A
    }else{
        //执行的代码B
    }
}, { passive: false });

ps:添加事件的第三个参数,参考我的另一篇博客:https://blog.csdn.net/konghouy/article/details/83047376

我们在这里主要关注回调函数传入的参数e,这个参数是浏览器侦测到事件的触发,将触发那一刻的一些触发的信息记录了下来。e里面比较重要的有三个属性:

changedTouches:保存了所有引发事件的手指信息

targetTouches:保存了当前对象上所有触摸点的列表;

touches:保存了当前所有触碰屏幕的手指信息

数组元素的属性:

  • identifier:表示每 1 个 Touch 对象 的独一无二的 identifier。有了这个 identifier 可以确保你总能追踪到这个 Touch对象。

  • clientX:触摸点相对于览器的 viewport左边缘的 x 坐标。不会包括左边的滚动距离。

  • clientY:触摸点相对于浏览器的 viewport上边缘的 y 坐标。不会包括上边的滚动距离。

  • pageX:触摸点相对于 document的左边缘的 x 坐标。 与 clientX 不同的是,他包括左边滚动的距离,如果有的话。

  • pageY:触摸点相对于 document的左边缘的 y 坐标。 与 clientY 不同的是,他包括上边滚动的距离,如果有的话。

  • target:总是表示 手指最开始放在触摸设备上的触发点所在位置的 element。 即使已经移出了元素甚至移出了document, 他表示的element仍然不变

需要注意的是

  • 在多指触控的时候,这里的三个属性都是数组。数组中保存着对应的手指位置信息。数组的顺序是是根据手指放上去的顺序,先放上去的在数组的前面。
  • changedTouches:记录了当前事件是由几根手指触发的,但是由于手机触控十分灵敏,所以当一根手指放在元素上不动,另外一根手指移动。这时changeDTouches的值,一直在1,2闪动。(也就是说,不动的那根手指也可能会触发事件)建议在开发中,不要使用changedTouches作为判断依据。
  • 在实际测试中,如果在手指按下后不抬起,移出了事件触发的源对象,仍然会触发回调函数。

三、应用

通过对touch事件的判断,即可增加对touch触发条件的控制。可以识别多指触控,让浏览器实现不同的效果。

四、调试问题

在PC浏览器上chrome控制台,可以启动手机模拟,用鼠标模拟触摸,但是无法实现多点触控模拟。而且相比真实触摸会因为微小的移动,导致连续touchmove,高精度的鼠标不移动就不触发touchmove。模拟真实度低。

当然也有解决方案,第一种使用支持多点触控的电脑直接模拟输入。或是用手机测试,将打印结果通过innerHTML写入页面中进行调试。

最终的解决方案就是使用Chrome控制台的Remote devices链接Android手机进行调试。这种方式通过数据线,把手机版chrome的操作对应的到电脑端的控制台打印。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web移动端-touch事件 的相关文章

  • Linux下嵌入式程序仿真调试(GDB)(二)

    目录 目录 前言 Ubuntu下Qt的GDB环境搭建未成功 Qt5的设置 命令行调试问题记录 总结 链接地址 前言 Linux下嵌入式程序仿真调试 GDB 一 主要介绍了GDB交叉调试环境的搭建过程 本想把交叉编译好的gdb程序放置到Qt中
  • 为WinDbg设置符号文件路径

    WinDbg可以通过加载Symbol文件 pdb 即时的调试程序 WinDbg如何找到相应的符号文件呢 WinDbg首先在 exe或者 dll所在目录下寻找同名的 pdb文件 如果找不到 WinDbg在Symbol File Path中查找
  • 浅谈Chrome开发者工具--- Console面板与常见报错类型

    Console面板 在学习JS之后 Console面板就成了我离不开的工具 在我们的程序无法达到我们所期望的效果时候 就可以在Console面板上调试我们的程序 在面板上 除了报错以外 还可以打印出我们在程序中所想要补货到的一些数据 我用的
  • Android强大的原生调试工具adb的常用命令

    文章目录 ADB简介 常用命令 列出链接的设备 进入设备的shell环境 设备日志 安装应用程序 卸载应用程序 将本地文件复制到调试设备上 将设备上的文件拉取到本地 启动程序 强制停止程序运行 截图 屏幕录制 列出调试设备所有的应用的报名
  • 《软件调试艺术》读后感七

    1 线程调试 对线程的调试用的最多的可能是thread命令了 查看程序中有多少线程使用Infothreads 进入到某个线程的内部使用thread count 这样就可以进入到count线程的内部 线程调试中用的最多的还有就是bt命令 这个
  • Python-WingIde各种调试方法

    一 本地从IDE启动文件调试 主要步骤 设置断点 F5开始调试 二 本地从IDE外启动文件调试 1 从WingIDE的安装目录 默认C Program Files x86 Wing IDE 6 0 复制wingdbstub py到被调试代码
  • ios 设备的移动端页面 光标错位

    1 这个问题遇到好多次了 经常是上下错位 原因是在input 获取焦点以后 键盘弹出后 页面网上移动 但是光标停留在了以前的位置 如果页面不复杂 可以在body上添加 position fixed 但是这样会引起页面失去滚动能力 目前只能是
  • weex实现带有跟手动画的tab栏

    在weex开发的群中看到有人提到这个问题 就想着去实现以下 还不是很完美 只支持一屏的tab栏内容 后续会进行优化 2019 6 20 更新 已支持滚动跟手 可以超出屏幕 2019 6 23 更新 解决子元素包含滚动标签时无法滑动切换的问题
  • 移动端/帆软移动报表调用拨打电话

    HTML a标签的href 属性 tel 点击可以直接拨打电话 移动端 a href 13622178579 a 把某个单元格 形态赋值为 公式形态 a href style color 508ef9 a ps F1列存储电话号码
  • 远程调试Android/IOS设备/微信网页方法汇总

    以下汇总现在可远程调试手机网页的几个方法 基本上官方都有详细的说明文档 可移步至相关网站查看 这里就不赘述使用 操作方法了 微信web开发者工具 PC客户端 官方说明文档 支持Windows和Mac系统 支持调试Android和IOS设备
  • js与移动端交互

    1 js 调用移动端ios与android方法 2 移动端ios与android调用js方法 3 demo如下 div div
  • Mock 模拟测试简介及 Mockito 使用入门

    Mock 是什么 mock 测试就是在测试过程中 对于某些不容易构造或者不容易获取的对象 用一个虚拟的对象来创建以便测试的测试方法 这个虚拟的对象就是mock对象 mock对象就是真实对象在调试期间的代替品 简单的看一张图 我们在测试类 A
  • LCD调试流程

    本来想学的更深入一些再来写这些总结 但想想 边学边写 记录成长过程也挺好的 下面自底向上 了解LCD的整个工作流程 一 LCD的组成结构和各结构的功能 1 背光板模组 提供光的来源 2 上下偏光板 TFT Glass Substrate 液
  • Android Studio 从安装到第一个Android 应用Demo

    安装Android Studio 安装需要 上网 我这挺顺利的 就是在官网下载安装包 一路 Next 大概连下载总共半个小时 第一个应用 参考官方教程 https developer android com codelabs basic a
  • Tomcat开启远程调试端口

    部署环境 Linux 亲测成功 tomcat7 bin startup sh的文件开头位置添加 declare x CATALINA OPTS server Xdebug Xnoagent Djava compiler NONE Xrunj
  • Web移动端-touch事件

    一 引入 在一个项目demo中 实现单指触控卡片的向任意方向的拖动效果 网上没有现成的插件 所以只好原生js来写 产品要求需要禁止掉多点触控 这个过程很让人头疼 试了很多方法 都不太实现 后来仔细研究 测试了一下移动端的三个常用事件 二 事
  • H5监听移动端物理/浏览器返回键

    JavaScript没有监听物理返回键的API 所以只能使用 popstate 事件监听 工具类如下 export function handleBrowserGoBack back console log back pushHistory
  • 禁止ios浏览器页面上下滚动 (橡皮筋效果)弹性滚动 微信的下拉回弹

    发现之前阻止页面滚动的代码e preventDefault代码失效了 于是自己折腾了一番 找到了解决办法 一 前言 浏览器在移动端有一个默认触摸滚动的效果 让我们感触最深的莫过于微信浏览器里面 下拉时自带橡皮筋的效果 然而在开发的时候我们经
  • ADB:实现双击效果

    命令 adb shell seq 2 while read i do input tap 993 814 input tap 993 814 sleep 0 01 done 但是 上述命令有时候变成两次点击 成功率大概80 左右把 没办法
  • Andriod:andriod手机屏幕坐标系

    如图所示 左上角为坐标原点 越向下 y值越大 越向右 x值越大

随机推荐

  • box-flex实现三等分布局

    前言 我还是个前端的菜鸟 现在在实习 接触到一些移动web的开发任务 遇到了很多问题 记录一下顺便分享给大家 问题 要实现下图的三等分屏幕效果 此页面为手机web页面 要求自适应宽度 探索 期初是用的width 33 33 但是这样很容易出
  • 【MLOps】第 4 章 : 开发模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • C语言getchar()函数:从控制台读取字符并立即回显

    头文件 include
  • 数据结构选择题

    1 数据元素及其关系在计算机存储器内的表示 称为数据的 B A 逻辑结构 B 存储结构 C 线性结构 D 非线性结构 2 某带头结点的单链表的头指针为 head 判定该链表为非空的条件是 B A headNULL B head gt nex
  • eclipse安装tomcat插件

    现在我只想说 我x你ma tmd 老子费了一下午 才他妈知道是怎么回事儿 原来是需要往eclipse了安装一个tomcat插件 害得我迷迷糊糊的搞了一下午 下班了都才搞明白 1 先下载一个tomcat插件 地址 http www eclip
  • 快速换线流程图_生产线快速切换的七大技巧

    SMED Single Minute Exchange of Die 一分钟即时换模 通常叫快速换模 也叫快速换产 是一种快速和有效的作业切换方法 这一概念指出 所有的转变或者启动都能够并且应该少于10分钟 因此才有了单分钟这一说法 所以又
  • python关键知识点

    1 变量 在程序中存储值或对象的名称 2 数据类型 指变量的数据类型 例如 str int float list tuple dict set 等 3 操作符 表示运算符号 例如加号 和减号 4 循环 通过重复执行某个代码块来实现多次操作的
  • 学习React与Next.js过程中的疑惑

    学习React与Next js过程中的疑惑 1 为什么React中函数作为props的时候 会出现无限调用的情况 而把函数放在箭头函数中就可以解决呢 2 next js与node js有什么区别 3 什么是快速刷新 4 Hooks出现的原因
  • IVTC/Deinterlace的来龙去脉

    IVTC Deinterlace的来龙去脉 1 胶片电影 曝光率为24帧 秒的progressive video 连续完整帧图像序列 它由无数个感光晶体 35mm可达5000 5000 实现图像曝光 而人眼在35mm的区域内能分辨的最大极限
  • 三句话,我让R语言自动升级了

    R语言是为数学研究工作者设计的一种数学编程语言 主要用于统计分析 绘图 数据挖掘 跟所有计算机语言一样 R语言也面临升级的问题 本文讲述了最快捷的升级R语言办法 不用重新安装之前的安装包 首先 进入R交互模式 然后三条命令搞定 instal
  • 抖音小程序开发教学系列(5)- 抖音小程序数据交互

    第五章 抖音小程序数据交互 5 1 抖音小程序的网络请求 5 1 1 抖音小程序的网络请求方式和API介绍 5 1 2 抖音小程序的数据请求示例和错误处理方法 5 2 抖音小程序的数据缓存和本地存储 5 2 1 抖音小程序的数据缓存机制和使
  • 交流电机绕组的分相

    交流电机绕组的分相 考虑到目前大多数伺服电机厂商已经逐渐使用集中式绕组进行制造 本文将以集中式绕组12槽10极电机为例简要介绍交流电机绕组的分相方法 即60 相带槽电势星形图方法1 槽电势星形图 当电机被带动旋转时 对于集中式绕组而言 每一
  • 穿越火线河北一区服务器位置,【 C F 史上最全的各大区“兵服”地址!】...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 电 信 区 四川二区 团队1 频道2 浙江二区 团队2 频道2 江西一区 团队1 频道2 高手1 频道10 广西一区 高手1 频道7 爆满 上海一区 爆破1 频道8 9 10 11 爆满 南方大
  • [LeetCode]大于给定和最短子数组

    对于数组的操作 在算法实现中 可以考虑三种思想 阵地攻守 例题https blog csdn net fmuma article details 79858876 指针碰撞 例题https blog csdn net fmuma artic
  • AD 常见绿色报错的消除

    TM 可以复位绿色错误 在这个里面 关闭所有报错 只打开电器里面的所有报错 23 PCB板框的评估及叠层设置 对PCB板框进行评估 1 全选器件 2 如果设置了快捷键但是没有起作用 右键单击上方菜单栏 如上图所示 然后找到更改的快捷键 删除
  • UE4 关于使用Webbrowser插件遇到的问题以及解决办法

    1 无法播放网页视频 这是因为UE4的WebBrowser自带的cef3为3071版本 默认不支持h364等直播流 导致web里的直播流无法播放 解决办法 第一种办法 重新编译了cef源码 改成支持H 264 然后在UE4安装目录下替换相关
  • 目标检测入坑指南3:VGGNet神经网络

    学了蛮久的目标检测了 但是有好多细节总是忘或者模棱两可 感觉有必要写博客记录一下学习笔记和一些心得 既可以加深印象又可以方便他人 博客内容集成自各大学习资源 所以图片也就不加水印了 需要自取 本专栏会详细记录本人在研究目标检测过程中的所学所
  • Flutter android及ios强制竖屏/横屏

    Flutter android及ios强制竖屏 横屏 在main dart内设置即可 在main dart内设置即可 void main WidgetsFlutterBinding ensureInitialized 不加这个强制横 竖屏会
  • Java:jdk-12.0.2安装教程(很全的哦)

    Java是一门综合性的编程语言 从最初设计时就综合考虑了嵌入式系统以及企业平台的开发支持 所以在实际的Java开发过程中 其主要有3种开发方向 分别为Java SE 其最早被称为J2SE Java EE 其最早被称为J2EE Java ME
  • Web移动端-touch事件

    一 引入 在一个项目demo中 实现单指触控卡片的向任意方向的拖动效果 网上没有现成的插件 所以只好原生js来写 产品要求需要禁止掉多点触控 这个过程很让人头疼 试了很多方法 都不太实现 后来仔细研究 测试了一下移动端的三个常用事件 二 事