· 2分で読了
iOS マウスダウンイベントのトリガーに関する問題
# フロントエンド この記事は中国語から自動翻訳されたものです。翻訳によりニュアンスが失われている場合があります。
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未満は一つの境界線であり、追加のテストが必要です。
ここに記録しておき、後で詳細な動作を補足していきます。
関連記事
- CSS field-sizing — 1行のCSSでフォーム要素を自動リサイズさせるtextarea の自動高さ調整は、以前は scrollHeight を監視する JavaScript が必要だった。CSS field-sizing: content なら1行で済む。textarea・input・select に対応。
- 超リンクの下線をもっときれいに見せる:text-underline-offsetデフォルトでは下線が文字にかなり近く、こういう見た目を好まないデザイナーもいる。僕自身も、あまりきれいだとは思っていない。
- なぜウェブは Pixel Perfect を追求すべきではないのかPixel Perfect が本当に重要なときだけそれを気にすべきであり、そうでなければ往々にして双方にとって損な結果になる。
- CSS の HSL で色を書こう!(そしてより良い方法)Web開発において、従来の HEX や RGB の色表現は広く使われているものの、読みやすさや直感性に欠ける問題があり、P3 のような広色域では表現力にも限界がある。HSL(色相、彩度、明度)は、より直感的に色を定義できる方法であり、開発者が色を理解し調整しやすくしてくれる。HSL は色相・彩度・明度の3つの軸で色を表すため、特にデザインシステムにおいて、カラーパレットの明度変化をより自然に扱える。