/
388.txt
190 lines (136 loc) · 9.88 KB
/
388.txt
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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
* 仕様書
[REFS[
- [19] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-05-05 06:42:10 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#fire-a-click-event>
- [29] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-01-30 08:05:01 +09:00]] 版) <https://html.spec.whatwg.org/#run-synthetic-click-activation-steps>
- [33] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-01-30 08:05:01 +09:00]] 版) <https://html.spec.whatwg.org/#run-authentic-click-activation-steps>
- [8] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-01-30 08:05:01 +09:00]] 版) <https://html.spec.whatwg.org/#dom-click>
]REFS]
* クリック操作
** 入力装置のクリック
;; [38] [RUBYB[[[クリック]]によって[[フォーカス]]を与える動作]@en[click-focusing behavior]]は、
通常は[[クリック]]より前 ([[マウスボタン]]を最初に押下した時) に発生します [SRC[>>33]]。
[35] [DFN[[RUBYB[[[指示装置]]]@en[pointing device]]]]が[[クリック]]された時には、
[[真正クリック活性化手順]]を走らせなければ[['''なりません''']] [SRAC[>>33]]。
[37] 通常は[[指示装置]]によって指示されていた位置の[[要素]]が[[対象要素]]となります。
;; [[hit testing]] を参照。
[36] ただし、[[対象要素]]となるのが [CODE(HTMLe)@en[[[canvas]]]] [[要素]]なら、
[[画布[CODE(DOMi)@en[MouseEvent]]再経路付け手順]]によって[[対象要素]]を決定しなければ[['''なりません''']]
[SRC[>>33]]。
** [CODE(DOMi)@en[HTMLElement]] [[インターフェイス]] [CODE(DOMm)@en[click]] メソッド
[9] [CODE(DOMi)@en[[[HTMLElement]]]] [[インターフェイス]]の
[DFN[[CODE(DOMm)@en[[[click]]]]]] [[メソッド]]は、
当該[[要素]]を[[クリック]]したことにするものです。
*** 動作
[28] この[[メソッド]]は、
当該[[要素]]の[[合成クリック活性化手順]]を実行しなければ[['''なりません''']]。
ただし、当該[[要素]]が[[無効化]]された[[フォーム制御子]]の場合には、
何もしては[['''なりません''']]。 [SRC[>>8]]
;; [11] この[[メソッド]]は[[引数]]がなく、返す値もありません [SRC[>>8]]。
;; [27] [[合成クリック活性化手順]]は [CODE(DOMm)@en[[[click]]]]
[[メソッド]]に呼び出されたか否かで動作が変わります。
[CODE(DOmm)@en[[[click]]]] [[メソッド]]による呼び出しの場合には、
[CODE(DOMa)@en[[[isTrusted]]]] が[[偽]]となります。
* 活性化
[6] ある[[要素]]における[DFN[[RUBYB[合成クリック活性化手順を走らせる]@en[run synthetic click activation steps]]]]とは、
当該[[要素]]の[[クリック前活性化手順]]、
[[[CODE(DOMe)@en[click]]イベントの発火]]、
[[クリック後活性化手順]]を順に実行することです [SRC[>>29]]。
;; [[イベントオブジェクト]]の [CODE(DOMm)@en[[[isTrusted]]]] の値は呼び出し元により変わります。
[34] ある[[対象要素]]における[DFN[[RUBYB[真正クリック活性化手順を走らせる]@en[run authentic click activation steps]]]]とは、
[[クリック前活性化手順]]、
[CODE(DOMe)@en[[[click]]]] [[イベント]]の [[dispatch]]、
[[クリック後活性化手順]]を順に実行することです [SRC[>>33]]。
ただし [[dispatch]] は[[対象要素]]において、
その前後の手順は[[直近活性化可能要素]]において
([[直近活性化可能要素]]があれば) 実行します [SRC[>>33]]。
;; [39] この2つの手順は、 [CODE(HTMLe)@en[[[canvas]]]] [[要素]]の動作 (>>36)
と[[活性化動作]]の対象となる[[要素]]が異なります。
[CODE(DOMe)@en[[[click]]]] [[イベント]]の発火方法が違っているのは、
[[HTML Standard]] が規定するか [[UI Events]] が規定するかの編集上の違いです。
[31] [CODE(DOMe)@en[[[click]]]] [[イベント]]が[[取り消し]]された場合には、
[[クリック後活性化手順]]のかわりに[[取り消しされた活性化の手順]]を実行しなければ[['''なりません''']] [SRC[>>29, >>33]]。
[30] 同じ[[要素]]で[[合成クリック活性化手順]]や[[真正クリック活性化手順]]を同時に
(入れ子に) 実行することはできず、
その場合には何もせずに終わらなければ[['''なりません''']] [SRC[>>29, >>33]]。
* [CODE(DOMe)@en[click]] イベント
[25] [DFN[[RUBYB[[CODE(DOMe)@en[click]] イベントを発火]@en[fire a [CODE(DOMe)@en[click]] event]]]]とは、
[[イベント型]] [CODE(DOMe)@en[[[click]]]] で [[bubble]] し、
[[キャンセル可能]]な[[合成マウスイベントを発火]]することをいいます [SRC[>>19]]。
[32] [[発火]]する [CODE(DOMe)@en[[[click]]]] [[イベント]]の[[イベントオブジェクト]]の
[CODE(DOMm)@en[[[isTrusted]]]] [[属性]]は、
[[合成クリック活性化手順]]が [CODE(DOMm)@en[[[click]]]]
[[メソッド]]によって呼び出された場合には、
[[偽]]としなければ[['''なりません''']] [SRC[>>29]]。
それ以外の時は[[真]]とします。
** [CODE(HTMLa)@en[onclick]] イベントハンドラー属性
[1] [[HTML]] のほとんどの要素で用意されている
[DFN[[CODE(HTMLa)[onclick]] 属性]]は、
[RUBYB[指示装置] [pointing device]]のボタンが[[要素]]の上で[[かちっ]]された時に発生する[[事象]]に関する[[内在事象]]属性です。
[2] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLa)[onclick]] 属性
<IW:HTML4:"interact/scripts.html#adef-onclick">
*** 代替
[3] 内在事象属性は[[表現と構造の分離]]の原則に反するので、
好ましくないと考える人もいます。また、 [[DOM 0]]
に基づく古い設計です。
代わりに、 [CODE(HTMLe)[[[script]]]] 要素などにより関連付けたスクリプト内で
[[DOM 2]] 以上の[[事象]]に関するメソッド等が利用できます。
DOM 水準2 や DOM 水準 3 はこの属性に対応する
DOM の事象 [CODE(DOM)[[[click]]]] を用意しています。
*** 属性値
[4] この属性の値は [CODE(SGML)[%[[Script]]]] です。 [[SGML]]
的には [CODE(SGML)[[[CDATA]]]] です。[[スクリプト言語]]は、
[CODE(HTTP)[[[Content-Script-Type]]]] によります。
[5] この属性は省略可能です。
*** 例
[7]
[PRE(HTML deprecated example code)[
使用ライブラリ:<a href="openex.js" onclick="return false" title="右クリックから保存">openex.js</a>
]PRE]
[CODE(HTMLe)[[[a]]]] 要素の[[活性化]]時の[[既定動作]]は[[リンク]]の[[探索]]ですが、
[[Webブラウザ]]の操作により明示的に[[ファイル]]として[[保存]]させるために、
[[偽]]を返して[[既定動作]]を取消しています。
[[リンク]]を[[右クリック]]したら[[ファイル]]として[[保存]]を選べるという特定の
[[Webブラウザ]]の挙動に激しく依存したこのような記述は好ましくありません。
出典:
(無題、2002年11月付け) <http://mugi.cc/js/000912.htm>
*** メモ
[12]
[CITE[onclick 属性問題について - IT戦記]] ([CODE[2008-05-24 20:47:14 +09:00]] 版) <http://d.hatena.ne.jp/amachang/20080517/1210991851>
* 歴史
[13] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) <http://www.whatwg.org/specs/web-forms/current-work/#the-click>
[10] [CODE(DOMm)@en[[[click]]]] [[メソッド]]は [[W3C DOM]] 時代は一部の[[要素]]にのみ定義されていましたが、
[[Web Applications 1.0]] (現 [[HTML Standard]]) によりすべての
[[HTML要素]]へと拡張されました。
[14] [[DSiブラウザー]]では [CODE(DOM絵)@en[[[click]]]] をキャンセルするとフォーカスが出なくなるようです。また、フォーカスはイベント終了後に表示されるので、 onclick に時間がかかると表示までに時間がかかります。
[15] [CITE[IRC logs: freenode / #whatwg / 20120609]]
( ([TIME[2012-06-28 21:17:45 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120609#l-299>
[16] [CITE@en[Web Applications 1.0 r7164 Fix a couple of places that misinvoked the default activation behaviour.]]
( ([TIME[2012-06-30 08:20:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7163&to=7164>
[17] [CITE@en[Web Applications 1.0 r7596 Make click() have no effect on links in non-bc'ed docs.]]
( ([TIME[2012-12-20 05:11:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7595&to=7596>
[18] [CITE[''''''[''''''whatwg'''''']'''''' Resource loading in browsing context-less Documents]]
( ([TIME[2012-12-20 04:51:06 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-December/038407.html>
[20] [CITE[''''''[''''''whatwg'''''']'''''' Resource loading in browsing context-less Documents]]
( ([TIME[2013-07-12 01:53:37 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040010.html>
[21] [CITE@en[Web Applications 1.0 r8050 Make .click() on certain elements not work if the document isn't active.]]
( ([TIME[2013-07-12 10:53:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8049&to=8050>
[22] [CITE[''''''[''''''whatwg'''''']'''''' Inert nodes and element.click()]]
( ([TIME[2013-07-13 09:28:35 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040051.html>
[23] [CITE@en[Web Applications 1.0 r8421 Make sure .click() doesn't fire on disabled form controls.]]
( ([TIME[2014-01-28 04:04:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8420&to=8421>
[24] [CITE@en-US[Notifications API Standard]]
( ([TIME[2014-02-11 16:20:34 +09:00]] 版))
<http://notifications.spec.whatwg.org/#activating-a-notification>
[26] [CITE[The Platform for Privacy Preferences 1.0 (P3P1.0) Specification]]
( ([TIME[2002-04-16 22:03:48 +09:00]] 版))
<http://www.w3.org/TR/P3P/#Dynamic_Data>