收藏
回答

开发者工具 touch 事件触发的数据有问题

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug macOS v1.02.1905151

- 当前 Bug 的表现(可附上截图)


在当前开发者工具中,点击一次触发的 touchstart 事件和 touchend 事件中的数据不一致(并没有进行移动,就是一次普通的点击)

可以看到下图中,touchstart (clientX,clientY,pageX,pageY为整数),而 touchend 事件中变为了浮点数



- 预期表现


如果试一次普通的点击,touchstart 和 touchend 事件触发的数据应该保持一致


- 复现路径


在页面上监听 touchstart 与 touchend 事件,然后进行点击


- 提供一个最简复现 Demo


最后一次编辑于  06-05  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 是柿子啊
    是柿子啊
    06-12

    你的工具版本以及基础库是?

    06-12
    赞同
    回复 5
    • 李小斐
      李小斐
      06-12

      呃。。不好意思,分类选错了,不是在小程序里,是公众号网页,因为没有这个分类所以。。


      工具版本是:v1.02.1905151

      06-12
      回复
    • 是柿子啊
      是柿子啊
      06-12回复李小斐

      代码片段提供下

      06-12
      回复
    • 李小斐
      李小斐
      06-12回复是柿子啊

      let distanceX = 0

      let distanceY = 0


      // 这里 el 是某个 dom 对象
      el.addEventListener('touchstart', (e) => {
        const pos = e.changedTouches[0]
        distanceX = pos.clientX
        distanceY = pos.clientY
        console.log('start', pos)

      })


      el.addEventListener('touchend', (e) => {
       const pos = e.changedTouches[0]

       distanceX = pos.clientX - distanceX

        distanceY = pos.clientY - distanceY

       console.log('end', pos)

       

       if (distanceX === 0 && distanceY === 0) {

          // 认为是点击事件(不用click的目的是防止点击穿透),一些逻辑 
        }
      })
       
      // 两次 console 出来的结果不一样


      06-12
      回复
    • 是柿子啊
      是柿子啊
      06-12回复李小斐

      代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)这个形式的代码片段

      06-12
      回复
    • 李小斐
      李小斐
      06-12回复是柿子啊

      公众号网页怎么创建代码片段。。我的意思是微信网页嵌入的 h5 页面

      06-12
      回复
  • 香蕉不是笨啦啦
    香蕉不是笨啦啦
    06-05

    你手指点下去也会有轻微移动的呐,才0.4

    06-05
    赞同
    回复 3
    • 李小斐
      李小斐
      06-06

      看看 chrome 的数据吧,一个 tap 而已,不可能有偏移的,另外开发工具更新前是好的



      06-06
      回复
    • 香蕉不是笨啦啦
      香蕉不是笨啦啦
      06-06

      自己看一下会不会偏移,微信开发者工具是基于谷歌浏览器的,谷歌浏览器一样会偏移


      06-06
      回复
    • 李小斐
      李小斐
      06-11

      那我上面的截图是假的呐,我当然看过了,你确定只是手指点击一下,不是滑动

      然后你是官方的开发人员吗,我觉着这么讨论是没有意义的,你那边表现出来的和我的截图表现出来的都是客观的数据,但是结果不一样,就值得去排查一下到底是哪里出了问题

      最后,抛开代码实现,从体验上讲,我 tap 一下屏幕,两次的事件触发也应该是数据一致的


      说一下版本吧

      开发者工具:v1.02.1905151

      chrome:74.0.3729.169

      系统:MacOS Mojave 10.14.5


      06-11
      回复