摘要:問題描述將第三方觸控庫刪掉使用原生事件后發現一個,具體表現為在中響應失效。經研究發現,在多次發出事件期間,重用了這個對象和里面對象,導致緩存被改動,無法正確記錄歷史數據。
問題描述
將第三方觸控庫刪掉使用原生事件后發現一個 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, }; });
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80630.html
摘要:在中與值是相等的,在微信中兩個數值不等,但單位應該也不一樣。測試過程中及微信內置瀏覽器都不支持這些屬性,模擬器可以。也是一個對象,對于事件這個對象列出在此次事件中新增加的觸點。 本文主要介紹 TouchEvent 相關的一些對象與屬性如 Touch, TouchList, touhces, targetTouches 等,以及使用的注意點和誤區。 觸摸事件有以下幾種類型:touchst...
閱讀 2633·2021-11-23 09:51
閱讀 889·2021-09-24 10:37
閱讀 3618·2021-09-02 15:15
閱讀 1966·2019-08-30 13:03
閱讀 1886·2019-08-29 15:41
閱讀 2632·2019-08-29 14:12
閱讀 1430·2019-08-29 11:19
閱讀 3307·2019-08-26 13:39