调试手记:iOS Safari 浏览器触摸事宜 targetTouches 属性被浏览器重用

题目形貌

将第三方触控库删掉运用原生事宜后发明一个 bug,具体表现为在 iOS Safari 中 touch 相应失效。

调试效果

运用 Chrome 考证功用一般,打 log 发明营业代码中缓存了 targetTouches 属性,然则下一次 touchmove 事宜到来时缓存的 targetTouches 被改变了,clientX 和 clientY 变成新值,致使没法准确盘算手指滑动间隔。经研讨发明,Safari 在屡次发出 touch 事宜时期,重用了 event.targetTouches 这个 touchList 对象和内里 Touch 对象,致使缓存被修改,没法准确纪录历史数据。

修改计划

不缓存 targetTouches 属性,而是将体贴的数据复制下来,演示代码以下:

this.lastTouches_ = map(evt.targetTouches, function(el) {
    return {
        clientX: el.clientX,
        clientY: el.clientY,
    };
});
    原文作者:Y3G
    原文地址: https://segmentfault.com/a/1190000007106790
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞