--- title: TouchEvent slug: Web/API/TouchEvent tags: - API - DOM - Interface - Reference - TouchEvent - touch - インターフェイス translation_of: Web/API/TouchEvent ---
{{APIRef("Touch Events")}}
TouchEvent
インターフェイスは、タッチ感応面への接触状態が変化したときに発生する {{domxref("UIEvent")}} を表します。この面は、例えばタッチ画面やトラックパッドです。このイベントは画面との 1 か所以上の接触を表すことが可能であり、また接触個所の移動、増加、減少などに対応することができます。
タッチは {{domxref("Touch")}} オブジェクトで表されます。それぞれのタッチで位置、大きさと形状、圧力の量、対象要素を示します。タッチのリストは {{domxref("TouchList")}} オブジェクトで表されます。
{{InheritanceDiagram}}
TouchEvent
オブジェクトを生成します。このインターフェイスは、親である {{domxref("UIEvent")}} および {{domxref("Event")}} からプロパティを継承しています。
0.0
です。1.0
です。タッチ関連の変化があったことを示すために発生するイベントは、数種類あります。イベントの {{domxref("event.type", "TouchEvent.type")}} プロパティを確認すると、何が発生したかを判断できます。
ユーザーがタッチ面のタッチ点に触れたときに発生します。イベントのターゲットは、タッチが発生した場所の要素 ({{domxref("Element")}}) です。
ユーザーがタッチ面からタッチ点を削除したとき (すなわち、指やスタイラスをタッチ面から離したとき) に発生します。これはタッチ点がタッチ面の端の外へ移動した場合にも発生します。例えば、ユーザーの指が画面の端よりも外に移動した場合です。
イベントのターゲットは、タッチ点が要素の外に移動した場合であっても、タッチ点に対応する touchstart
イベントを受信したのと同じ要素 ({{domxref("Element")}}) です。
タッチ面から削除されたタッチ点所 (複数の場合を含む) は、 changedTouches
属性で示される {{domxref("TouchList")}} でわかります。
ユーザがタッチ面でタッチ点を動かしたときに発生します。イベントのターゲットは、タッチ点が要素の外に移動した場合であっても、タッチ点に対応する touchstart
イベントを受信したのと同じ要素 ({{domxref("Element")}}) です。
このイベントはタッチ点の範囲、回転角、強さの属性が変化したときにも発生します。
touchmove
イベントが発生する頻度はブラウザーごとに異なります。また、ユーザーのハードウェアの能力にも大きく依存するでしょう。特定のイベント粒度に依存してはいけません。タッチ個所が何らかの方法で取り消されたときに発生します。このイベントが発生する理由はいくつか考えられます (正確な理由はデバイスごと、およびブラウザごとに異なるでしょう):
重要なのは多くの場合、タッチイベントとマウスイベントの両方が送られることです (タッチに特化していないコードがユーザーと対話するため)。タッチイベントを使用する場合は、 {{domxref("Event.preventDefault","preventDefault()")}} を呼び出してマウスイベントが送信されないようにしてください。
Chrome のバージョン 56 以降 (デスクトップ版, Android 版 Chrome, Android WebView) は例外で、 passive
オプションの {{domxref("Element/touchstart_event", "touchstart")}} および {{domxref("Element/touchmove_event", "touchmove")}} における既定値は true
であり、 {{domxref("Event.preventDefault","preventDefault()")}} の呼び出しは効果がありません。この動作を変更するためには、下記の例にあるように {{domxref("Event.preventDefault","preventDefault()")}} の呼び出しの後で passive
オプションを false
に設定すると、仕様書通りに動作します。リスナーを既定で passive
と扱うことで、ユーザーがスクロール中にページのレンダリングがブロックされることを防いでいます。デモが Google Developer サイトにあります。
{{domxref("GlobalEventHandlers")}} ミックスインは以下のイベントをグローバルイベントとして定義しており、 DOM 中のユーザーと対話できるあらゆる要素で利用できます。
タッチイベントのメイン記事にある例をご覧ください。
仕様書 | 状態 | 備考 |
---|---|---|
{{SpecName('Touch Events 2','#touchevent-interface', 'TouchEvent')}} | {{Spec2('Touch Events 2')}} | グローバル属性ハンドラーの ontouchstart , ontouchend , ontouchmove , ontouchend を追加 |
{{SpecName('Touch Events', '#touchevent-interface', 'TouchEvent')}} | {{Spec2('Touch Events')}} | 初回定義 |
{{Compat("api.TouchEvent")}}