半熟前端

軟體工程師 / 台灣人 / 在前端的路上一邊探索其他領域的可能性

前端

iOS mousedown 事件觸發問題

iOS mousedown 事件觸發問題

iOS 在某些版本下 mousedown 處理器不會正確運作,不過在其他裝置上(像 Android 等等),mousedown 仍然是可以正確運作的。

解決方法是在手機上不要用 mousedown 處理器,用 touchStart 來處理,但不知道觸發順序是否會受到影響?原本在 click 事件當中,是 blur 會先觸發(如果有)再觸發 click 事件,為了躲掉這個點才用 mousedown 取代。

在 codepen 上進行簡單的實驗:

See the Pen touchstart-test by 愷開 (@kjj6198) on CodePen.

可以發現觸發順序會是 touchstart > mousedown > blur,看來如果同時加入 touchstart 跟 mousedown 事件,在兩個事件都支援的情況下,兩個事件會按照 touchstart > mousedown 的順序發生?

網路上查了一下,發現是 iOS<13 時,mousedown 事件才不會被觸發,iOS 13 以後是正常運作。另外如果是 iPad 的話似乎還可以判斷 touch 是來自手指還是 apple pencil。

結論

  • iOS 做 mousedown 之類的綁定時要小心,盡量用 touch 系的事件取代。
  • iOS13 跟 iOS<13 是個分界點,要另外做測試。

先在這裡記錄一下,之後再把詳細行為一一補上。