aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/globaleventhandlers/onpointerdown/index.html
blob: fa4c33e8feb2ed73c0c728c42f80416e1a411c66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
---
title: GlobalEventHandlers.onpointerdown
slug: Web/API/GlobalEventHandlers/onpointerdown
tags:
  - API
  - Document
  - Element
  - GlobalEventHandlers
  - HTML DOM
  - Pointer Events
  - Pointer Events API
  - PointerEvent
  - Property
  - Reference
  - Window
translation_of: Web/API/GlobalEventHandlers/onpointerdown
---
<div>{{APIRef("HTML DOM")}}</div>

<p><strong><code>ontransitioncancel</code></strong>{{domxref("GlobalEventHandlers")}} のイベントハンドラーで、ポインティングデバイスが最初に押されたときに発生する {{event("pointerdown")}} イベントのイベントハンドラーを指定するために使用します。このイベントは {{domxref("Window")}}, {{domxref("Document")}}, {{domxref("Element")}} の各オブジェクトに送信されることがあります。</p>

<p>これは、マウスまたはマウスと互換性のあるデバイスでユーザーが操作したために生成された場合の {{event("mousedown")}} イベントと機能的に同等です。 <code>pointerdown</code> イベントが {{domxref("Event.preventDefault", "preventDefault()")}} の呼び出しによってキャンセルされなかった場合、ほとんどのユーザーエージェントは <code>mousedown</code> イベントを発生させるので、ポインターイベントを使用していないサイトでも機能します。</p>

<p>{{domxref("EventTarget.addEventListener", "addEventListener()")}} を使用して、 <code>pointerdown</code> イベントのリスナーを追加することもできます。</p>

<h2 id="Syntax" name="Syntax">構文</h2>

<pre class="syntaxbox notranslate"><var>target</var>.onpointerdown = <var>downHandler</var>;

var <var>downHandler</var> = <var>target</var>.onpointerdown;
</pre>

<h3 id="Value" name="Value"></h3>

<p>関数 ({{jsxref("Function")}}) で、 <code>pointerdown</code> イベントが<code><var>target</var></code> で指定された {{domxref("Element")}}, {{domxref("Document")}}, {{domxref("Window")}} に送られた場合に処理するためのものです。これは入力として <code>pointerdown</code> イベントを記述する {{domxref("PointerEvent")}} を受け取ります。</p>

<h2 id="Example" name="Example"></h2>

<p>この例では、<code>onpointerdown</code> を使用して <code>pointerdown</code> イベントを監視し、それに基づいて行動する方法を示します。 もちろん、<code>addEventListener()</code> を使うこともできます。</p>

<h4 id="JavaScript">JavaScript</h4>

<p>まず、<code>pointerdown</code> イベントを処理する JavaScript コードを見てみましょう。</p>

<pre class="brush: js notranslate">var targetBox = document.getElementById("target");

targetBox.onpointerdown = handleDown;

function handleDown(evt) {
  var action;

  switch(evt.pointerType) {
    case "mouse":
      action = "clicking";
      break;
    case "pen":
      action = "tapping";
      break;
    case "touch":
      action = "touching";
      break;
    default:
      action = "interacting with";
      break;
  }

  targetBox.innerHTML = "&lt;strong&gt;Thanks for " + action + " me!&lt;/strong&gt;";
  evt.preventDefault();
}</pre>

<p>これは単に <code>pointerdown</code> イベントのイベントハンドラとして関数 <code>handleDown()</code> を確立するために <code>onpointerdown</code> を使います。</p>

<p><code>handleDown()</code> 関数は、今度は {{domxref("PointerEvent.pointerType", "pointerType")}} の値を調べて使用されているポインティングデバイスの種類を判断し、その情報を使用して文字列をカスタマイズしてターゲットボックスの内容を置き換えます。</p>

<p>それから、イベントの {{domxref("Event.preventDefault", "preventDefault()")}} メソッドを呼び出して、<code>mousedown</code> イベントがトリガーされないようにします。 そうしないで、ポインターイベントのサポートが欠けている場合に備えて、それらのイベント用のハンドラを持っていると、イベントが2回処理される可能性があります。</p>

<p>{{event("pointerup")}} イベント用のハンドラーもあります。</p>

<pre class="brush: js notranslate">targetBox.onpointerup = handleUp;

function handleUp(evt) {
  targetBox.innerHTML = "Tap me, click me, or touch me!";
  evt.preventDefault();
}</pre>

<p>このコードの役割は、ユーザーによる要素の操作が終了した後 (例えば、マウスボタンを放したとき、またはスタイラスや指を画面から離したときなど) に、元のテキストをターゲットボックスに復元することです。</p>

<p>さらに、<code>mouseup</code> イベントが不必要にトリガーされないようにするために、イベントの {{domxref("Event.preventDefault", "preventDefault()")}} メソッドを呼び出します。</p>

<details><summary>
<h4 id="HTML">HTML</h4>
</summary>

<p>HTML は次のように非常に単純です。</p>

<pre class="brush: html notranslate">&lt;div id="target"&gt;
  Tap me, click me, or touch me!
&lt;/div&gt;</pre>
</details>

<details><summary>
<h4 id="CSS" name="CSS">CSS</h4>
</summary>

<p>CSS は単にターゲットの外観を設定するだけで、その機能にはまったく影響しません。</p>

<pre class="brush: css notranslate">#target {
  width: 400px;
  height: 30px;
  text-align: center;
  font: 16px "Open Sans", "Helvetica", sans-serif;
  color: white;
  background-color: blue;
  border: 2px solid darkblue;
  cursor: pointer;
  user-select: none;
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
}</pre>
</details>

<h4 id="Result" name="Result">結果</h4>

<p>結果の出力は次の通りです。 ボックスをタップ、クリック、タッチして、何が起こるかを確認してください。 最大の効果を得るには、さまざまなポインタタイプで試してください。</p>

<p>{{EmbedLiveSample("Example", 450, 50)}}</p>

<h2 id="Specification" name="Specification">仕様書</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">仕様書</th>
   <th scope="col">状態</th>
   <th scope="col">備考</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('Pointer Events 2','#dom-globaleventhandlers-onpointerdown', 'onpointerdown')}}</td>
   <td>{{Spec2('Pointer Events 2')}}</td>
   <td>不安定版</td>
  </tr>
  <tr>
   <td>{{SpecName('Pointer Events', '#widl-GlobalEventHandlers-onpointerdown', 'onpointerdown')}}</td>
   <td>{{Spec2('Pointer Events')}}</td>
   <td>初回定義</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>

<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>

<p>{{Compat("api.GlobalEventHandlers.onpointerdown")}}</p>

<h2 id="See_also" name="See_also">関連情報</h2>

<ul>
 <li><a href="/ja/docs/Web/API/Pointer_events">ポインターイベント</a></li>
 <li><a href="/ja/docs/Web/API/Pointer_events/Using_Pointer_Events">ポインターイベントの使用</a></li>
 <li><a href="/ja/docs/Web/CSS/CSSOM_View/Coordinate_systems">座標系</a></li>
 <li><code><a href="/ja/docs/Web/API/Document/pointerdown_event">Document: pointerdown</a></code> イベント</li>
 <li><code><a href="/ja/docs/Web/API/HTMLElement/pointerdown_event">HTMLElement: pointerdown</a></code> イベント</li>
</ul>