質問やフィードバックがありましたら、フォームからお願いします
目次
本文は台湾華語で、ChatGPT で翻訳している記事なので、不確かな部分や間違いがあるかもしれません。ご了承ください
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の場合は、タッチが指から来たのか、Apple Pencilから来たのかを判別できるようです。
結論
iOS
でmousedown
のようなバインディングを行う際は注意が必要で、できるだけtouch
系のイベントに置き換えるべきです。- iOS 13 と iOS 13未満は一つの境界線であり、追加のテストが必要です。
ここに記録しておき、後で詳細な動作を補足していきます。
この記事が役に立ったと思ったら、下のリンクからコーヒーを奢ってくれると嬉しいです ☕ 私の普通の一日が輝かしいものになります ✨
☕Buy me a coffee