/
320.txt
484 lines (392 loc) · 26.8 KB
/
320.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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
[6] [[ハイパーリンク]]は、[RUBYB[たどる]@en[follow]]ことによって[[リンク先]]に
[[navigate]] させたり、[[ダウンロード]]することによって[[リンク先]]を保存したりできます。
* 仕様書
[REFS[
- [72] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#the-link-element>
- [92] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#the-a-element>
- [80] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#links-created-by-a-and-area-elements>
- [5] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-24 02:22:02 +09:00]] 版) <https://html.spec.whatwg.org/#following-hyperlinks-2>'''
- [34] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-24 02:22:02 +09:00]] 版) <https://html.spec.whatwg.org/#hyperlink-auditing>
- [40] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#downloading-hyperlinks>
- [143] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-05-24 17:09:37 +09:00]]) <https://html.spec.whatwg.org/#link-type-noreferrer>
- [98] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#the-area-element>
]REFS]
* リンク元の表示
[75] [CODE(HTMLe)@en[a]] [[要素]]は通常の [[CSS]] の規則に従い、
[CODE(HTMLe)@en[area]] [[要素]]は[[画像写像]]の処理規則に従い、
[[文書]]の一部として[[表示]]されます。
[76] [CODE(HTMLe)@en[link]] [[要素]]は標準状態では[[表示]]されませんが、
通常の [[CSS]] の規則に従い、[[著者]]の指定によって[[表示]]させることができます。
** 利用者による指示
[77] [[利用者エージェント]]は、[[活性化動作]] (>>32)
としてこれらの[[リンク元]]から[[ハイパーリンクをたどる]]、
あるいは[[ハイパーリンクのダウンロード]]を実行する手段を[[利用者]]に提供することになっています。
[73] 加えて、[[利用者エージェント]]は、 [CODE(HTMLe)@en[link]] [[要素]]で作成された[[ハイパーリンク]]について、
[[利用者]]が[[ハイパーリンクをたどる]]ことを指示する方法を提供できます [SRC[>>72]]。
;; 具体的な表示方法や指示方法は規定されていません。また提供の義務はありません。
[CODE(HTMLe)@en[link]] も参照。
;; [74] [[ハイパーリンクのダウンロード]]の手段の提供の可否には
[[HTML Standard]] は言及していませんが、意図的なのかどうかは不明です。
[79] [[クリック]]等による[[活性化動作]]の他に、
[[文脈メニュー]]からの動作の選択や、
他の[[閲覧文脈]]への[[リンク]]の[[ドラッグ]]、
[[ダウンロードマネージャー]]や他の[[アプリケーション]]への[[リンク]]の[[ドラッグ]]などでも[[ハイパーリンクをたどる]]処理や[[ハイパーリンクのダウンロード]]の処理を起動する必要がありそうですが、
それに関する明文規定は今のところなさそうです。
(流石にこれらがすべて[[クリック]]の特殊形で[[活性化動作]]としてカバーされるとみなすのは無理がありそうです。
しかしいずれも[[活性化動作]]と同じ挙動でうまく処理できそうです。)
[114] いずれにせよ、[[利用者エージェント]]は、[[リンク]]に関する一連の処理に対して、
次のような情報を保持した[[オブジェクト]][VAR[イベント]]を (内部的に)
用意して引き渡すことになります。
[FIG(list)[
- [116] 実際の[[指示装置]]による活性化の指示かどうかのフラグ
- [117] [[指示装置]]によって指示されている[[座標]] (あれば。)
- [120] [[修飾キー]]の押下状態 (あれば。)
- [118] [[メニュー]]などから[[利用者]]が明示的選択した動作 (あれば。新しい[[閲覧文脈]]を開く、
[[ダウンロード]]する、など。)
- [119] [[DnD]] などで[[利用者]]が明示的に指定した [[navigate]] に使う[[閲覧文脈]]
(あれば。)
- [130] [[DnD]] などで[[利用者]]が明示的に指定した[[ダウンロード]]後の保存先の[[ディレクトリー]]や[[ファイル名]]や[[ヘルパーアプリケーション]]
]FIG]
[140] [[利用者エージェント]]から[[利用者]]に提示する選択肢には、普通何らかの制限があります。
[EG[
[141] 例えば多くの[[デスクトッププラットフォーム]]の[[視覚的利用者エージェント]]は[[ハイパーリンク]]の
[[DnD]] で[[ハイパーリンクをたどる]]ために使う[[閲覧文脈]]を選択できますが、
[[入れ子閲覧文脈]]や[[補助閲覧文脈]]への [[DnD]] は禁止するのが好ましそうです。
]EG]
[EG[
[142] [CODE(URI)@en[javascript:]] [[URL]] の[[ハイパーリンク]]を[[著者]]の指定以外の[[閲覧文脈]]で処理するのは好ましくなさそうです。
;; [145] [[Chrome]] は [[DnD]] を制限していないようですが... [TIME[2016-10-10T02:36:54.000Z]]
]EG]
** 利用者への事前情報の提示
[27] 普通、[[Webブラウザー]]は、実際に[[利用者]]が[[ハイパーリンクをたどる]]前に、
([CODE(CSS)@en[:hover]] や [CODE(CSS)@en[:focus]] となった時点で)
[[リンク先]]の [[URL]] (>>47) を[[利用者]]へのヒントとして提示します。
[28] かつては[[ステータスバー]]に示すのが一般的でしたが、
[[ステータスバー]]が使われなくなってからは、
一時的に[[ステータスバー]]の位置に表示する形態が普通となりました。
[31] [[tooltip]] として表示する実装もありました。
[29] [[利用者エージェント]]によっては、 [[URL]] 全体ではなく、
一部を省略して表示することがあります。
[30] [[Firefox]] は[[ハイパーリンク接尾辞]]も含めて表示しますが、
[[Chrome]] は含めずに表示します。 [TIME[2016-03-26T04:18:24.300Z]]
[37] [CODE(HTMLa)@en[ping]] [[属性]]がある場合はその旨も併記する[SHOULD[べき]]
[SRC[>>34]] とされていますが、現行の[[利用者エージェント]]でそのように実装しているものはなさそうです。
;; [CODE(HTMLa)@en[ping]] も参照。
* リンク先URL
[47] [[要素]][VAR[要素]]と[[イベント]][VAR[イベント]]のリンク先のURLは、
次のように決定したものです [SRC[>>5, >>40]]。
[FIG(steps)[
= [48] [VAR[href]] を、[VAR[要素]]の [CODE(HTMLa)@en[href]] [[属性値]]に設定します。
= [15] [VAR[URL]] を、[VAR[要素]]の[F[節点文書]]に[[相対]]に [VAR[href]]
に [[URLの構文解析]]を適用した結果に設定します。
= [46] [VAR[URL]] が[[失敗]]でなければ、
== [23] [VAR[URL]] の末尾に、[VAR[要素]]と[VAR[イベント]]に関するハイパーリンク接尾辞 (>>52)
を追加します。
= [50] [VAR[URL]] を返します。
]FIG]
[51] つまり、 [CODE(HTMLa)@en[href]] [[属性]]の値を[[文書基底URL]]
に対して[[解決][URLの解決]]した結果がリンク先の [[URL]] となります。
[52] ただし [CODE(HTMLa)@en[ismap]] ([[サーバー側画像写像]]) を使っている時は、
その末尾に[[座標]]を付加した値となります。これが「ハイパーリンク接尾辞」です。
[VAR[要素]]の「ハイパーリンク接尾辞」は、
イベント[VAR[イベント]]について、次のように決定したものです。
[FIG(steps)[
= [100]
[FIG(list)[
- [101] [VAR[要素]]が [CODE(HTMLe)@en[a]] [[要素]]
- [102] [VAR[イベント]]の[F[対象]]が [CODE(HTMLe)@en[img]] [[要素]]
- [103] [VAR[イベント]]の[F[対象]]に [CODE(HTMLa)@en[ismap]] [[属性]]がある
]FIG]
... のすべてを満たすなら、 [SRC[>>92]]
== [49] [VAR[イベント]]が実際に[[指示装置]]から発せられたものなら、
=== [105] [VAR[x]] を、[VAR[イベント]]の[F[対象]]の[[左辺]]から指示位置までの[[CSS画素]]単位の[[距離]]に設定します。
=== [110] [VAR[x]] が[[負]]なら、[VAR[x]] を、 0 に設定します。
=== [106] [VAR[y]] を、[VAR[イベント]]の[F[対象]]の[[上辺]]から指示位置までの[[CSS画素]]単位の[[距離]]に設定します。
=== [111] [VAR[y]] が[[負]]なら、[VAR[y]] を、 0 に設定します。
== [107] それ以外なら、
=== [108] [VAR[x]] を、 0 に設定します。
=== [109] [VAR[y]] を、 0 に設定します。
== [112] [CODE[?]]、[VAR[x]]、[CODE[,]]、[VAR[y]] を連結した結果を返します。
[VAR[x]] と [VAR[y]] は、それぞれ[[ASCII数字]]で[[十進数]]で表したものとします。
= [104] それ以外の場合、[[空文字列]]を返します。
]FIG]
[99] ここで、[VAR[イベント]]は、[[活性化動作]]によって[[ハイパーリンクをたどる]]場合には、
その [CODE(DOMe)@en[click]] [[イベント]]です [SRC[>>92]]。
[[利用者インターフェイス]]への表示の場合は、 [CODE(DOMe)@en[mousemove]]
など適当な[[イベント]]です。
[113] [[画像]]の実際のサイズではなく、表示上のサイズから[[座標]]が決まります。
;; [115] 座標の値は、最短の[[十進数]]表記とするべきと思われますが、なぜか明記されていません。
[24] [VAR[URL]] に[[素片識別子]]が含まれる場合、[[ハイパーリンク接尾辞]]はその後に追加されるので、
[[サーバー]]には送信されないことになります。おかしな動作ですが、
[[HTML Standard]]、[[Chrome]]、[[Firefox]] とも共通しています。
* 活性化動作
[32] [CODE(HTMLe)@en[a]], [CODE(HTMLe)@en[area]], [CODE(HTMLe)@en[link]]
各[[要素]]の[[活性化動作]]として、[[ハイパーリンク]]の処理が規定されています。
;; [33] [[SVG]] の [CODE(XMLe)@en[a]] [[要素]]や、かつて実装されていた頃の [[XLink]]
[[単純リンク]]もほぼ同様に処理されるべきものと思われますが、明文規定はありません。
[84] [[要素]][VAR[要素]]の[[活性化動作]]は、
[VAR[イベント]]について、
次のようにしなければ[MUST[なりません]]。
[FIG(steps)[
= [148] [VAR[要素]]が[[navigateできない]]場合、
== [149] ここで停止します。
= [93] [VAR[動作]]を、[VAR[要素]]と[VAR[イベント]]から判断した動作 (>>38) に設定します。
= [94] [VAR[動作]]が「たどる」なら、
== [91] [VAR[要素]]について[[ハイパーリンクをたどる]]処理を実行します
[SRC[>>72, >>92, >>98]]。
[VAR[イベント]]を引き渡します。
= [95] [VAR[動作]]が「ダウンロード」なら、
== [96] [VAR[要素]]について[[ハイパーリンクをダウンロード]]します [SRC[>>92, >>98]]。
[VAR[イベント]]を引き渡します。
]FIG]
[150] [VAR[要素]]が[DFN[[RUBYB[navigateできない]@en[cannot navigate]]]]とは、
つぎの''いずれか''が[[真]]であることをいいます [SRC[[CITE[HTML Standard]]]]。
- [151] [VAR[要素]]の[F[節点文書]]が[[完全に活性]]では''ない''
- [152] [VAR[要素]]が [CODE[a]] では''なく''、[[文書に接続]]されて''いない''
;; [89] [[後方互換性]]のため、 [CODE[a]] [[要素]]のみ特例が設けられています。
;; [90] [[ハイパーリンクをたどる]]操作の他に、[[フォームの提出]]からも参照されます。
[38] [VAR[要素]]と[VAR[イベント]]から[[ハイパーリンク]]を
「たどる」か「ダウンロード」かを、次のようにして決定します。
[FIG(steps)[
= [83] [VAR[要素]]が [CODE(HTMLe)@en[link]] [[要素]]なら、「たどる」を返し、ここで停止します [SRC[>>72]]。
= [81] [VAR[イベント]]で[[利用者]]がどちらかを示している時は、それを返し、ここで停止します [SRC[>>80]]。
= [85] [VAR[要素]]に [CODE(HTMLa)@en[download]] [[属性]]があれば、
== [86] 「ダウンロード」を返す[SHOULD[べきです]] [SRC[>>80]]。
= [87] 「たどる」を返す[SHOULD[べきです]] [SRC[>>80]]。
]FIG]
[88] [[利用者]]の指示は、[[文脈メニュー]]から「開く」と「ダウンロード」
のいずれかを選ぶ形で行われるかもしれませんし、
操作時点の [KBD[Ctrl]] や [KBD[Shift]] などの押下状態によって決められるかもしれません。
どのように指示させるか (そもそも指示の手段を提供するか) は、
[[利用者エージェント]]に委ねられています。
[MUST[MUST]] でなく [SHOULD[SHOULD]] となっているのも、
[[利用者エージェント]]の個別の事情に関する事項だからと思われます。
;; [82] [CODE(HTMLe)@en[link]] [[要素]]については、なぜか「たどる」
しか選択肢が用意されていません。
;; [39] 「たどる」が選ばれたとしても、 [[navigate]]
が最終的に[[ダウンロード]]となることもあります。 [[navigate]] 参照。
;; [126] [[HTML Standard]] は[[活性化動作]]での[[ポップアップ]]検査 (>>59, >>122)
と実際の動作 (>>93) とで「たどる」と「ダウンロード」との分岐条件がなぜか微妙に違っているのですが、
どちらも同条件で分岐するべきと思われます。
更にエラーとする条件が[VAR[要素]]に [CODE(HTMLa)@en[target]]
[[属性]]があるかどうかとされていますが、それ以外 ([CODE(HTML)@en[<base target>]] がある場合)
も同じようにエラーとするべきように思われます。
[131] [VAR[要素]]の提案ファイル名は、次のようにして決定した値です [SRC[>>40]]。
[FIG(steps)[
= [132] [VAR[要素]]が [CODE(HTMLe)@en[link]] [[要素]]なら、
== [133] [[null]] を返します。
= [134] それ以外なら、
== [135] [VAR[ファイル名]]を、 [VAR[要素]]の [CODE(HTMLa)@en[download]]
[[属性値]]に設定します。
== [136] [VAR[ファイル名]]が[[空文字列]]なら、
=== [137] [[null]] を返します。
== [138] それ以外なら、
=== [139] [VAR[ファイル名]]を返します。
]FIG]
* ハイパーリンクをたどる
[7] [VAR[要素]]と[VAR[イベント]]について[DFN[[RUBYB[[[ハイパーリンクをたどる]]]@en[follow a hyperlink]]]]
[SRC[>>5]] 操作は、[[ハイパーリンク]]で指定された [[URL]] へと [[navigate]]
するものです。多くの[[ハイパーリンク]]の標準の操作は、
この「[[ハイパーリンク]]をたどる」操作となっています。
[41] 次のようにしなければ[MUST[なりません]] [SRC[>>5]]。
[FIG(steps)[
= [9] [VAR[始点]]を、[VAR[要素]]の[F[節点文書]]の[F[閲覧文脈]]に設定します。
= [14] [VAR[noopener]] を、
[VAR[要素]]の[F[リンク型群][リンク型]]に
[CODE(HTML)@en[noreferrer]] または [CODE(HTML)@en[noopener]] が含まれているか否かに設定します。
= [10] [VAR[対象]]、[VAR[[[置換有効]]]]、[VAR[[[利用者]]が[[閲覧文脈]]を明示した]]を、
[[閲覧文脈の選択]]の結果に設定します。
[FIG(list members)[
: [VAR[要素]] : [VAR[要素]]
: [VAR[利用者指示]] : [VAR[イベント]]
: [VAR[noopener]] : [VAR[noopener]]
]FIG]
= [59] [VAR[対象]]が何も選ばれなかった場合、
== [61] [[入口設定群オブジェクト]]があれば、
=== [97] [CODE(DOMe)@en[InvalidAccessError]] [[例外]]を[[投げ]]ます。 [SRC[>>92, >>98]]
== [121] ここで停止します。 [SRC[>>92, >>98]]
= [11] [VAR[置換有効]]が[[真]]で、 [VAR[noopener]] が[[真]]の場合、
== [13] [VAR[対象]]の[F[opener閲覧文脈]]を [[disown][disown its owner]] します。
= [53] [VAR[URL]] を、[VAR[要素]]と[VAR[イベント]]におけるリンク先のURL
(>>47) に設定します。
= [16] [VAR[URL]] が[[失敗]]なら、
== [42] 失敗を報告します (>>18)。
= [17] それ以外なら、
== [25] [[タスク]]を[[タスクキューに追加]]します。
[FIG(list members)[
[FIGCAPTION[
[[タスク]]
]FIGCAPTION]
: [VAR[処理]] :
[FIG(steps)[
= [26] [[navigate]] します。
[FIG(list members)[
: [VAR[新しい[[資源]]]] :
[FIG(list members)[
: [F[要求]] :
[FIG(list members)[ [157] [[要求]]
: [F[URL][要求URL]] : [VAR[URL]]
: [F[参照元]] : [VAR[要素]]の[F[リンク型群]]に [CODE[noreferrer]]
が含まれれば [CODE[no-referrer]]。それ以外なら [CODE[client]]。
: [F[参照元ポリシー]] : [VAR[要素]]の [CODE(HTMLa)@en[referrerpolicy]] [[属性]]の状態
]FIG]
]FIG]
: [VAR[[[navigate]] する[[閲覧文脈]]]] : [VAR[対象]]
: [VAR[[[始点閲覧文脈]]]] : [VAR[始点]]
: [VAR[[[置換有効]]]] : [VAR[置換有効]]
: [VAR[新しい[[最上位閲覧文脈]]]] : [VAR[置換有効]]
: [VAR[提案ファイル名]] : [VAR[要素]]の提案ファイル名 (>>131)
: [VAR[[[利用者]]が[[閲覧文脈]]を明示した]] : [VAR[[[利用者]]が[[閲覧文脈]]を明示した]]
]FIG]
]FIG]
: [VAR[タスク源]] : [[DOM操作タスク源]]
]FIG]
== [54] [VAR[要素]]と[VAR[URL]]について [CODE(HTMLa)@en[ping]] [[属性]]の処理 (>>55) を実行します。
]FIG]
* ハイパーリンクをダウンロード
[60] [VAR[要素]]と[VAR[イベント]]の[DFN[[RUBYB[ハイパーリンクをダウンロード]@en[download a hyperlink]]]]
[SRC[>>40]] する操作は、[[ハイパーリンク]]で指定された [[URL]] について[[ダウンロード]]を実行するものです。
[62] 次のようにしなければ[MUST[なりません]] [SRC[>>40]]。
[FIG(steps)[
= [63] [VAR[URL]] を、[VAR[要素]]と[VAR[イベント]]におけるリンク先のURL
(>>47) に設定します。
= [64] [VAR[URL]] が[[失敗]]なら、
== [65] 失敗を報告します (>>18)。
= [66] それ以外なら、
== [68] [[並列に]]、
=== [69] [[要求]]を [[fetch]] します。[VAR[続きの処理]]は、[[ダウンロード]]とします。
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求のURL]] : [VAR[URL]]
: [F[クライアント][要求のクライアント]] : [[入口設定群オブジェクト]]
: [F[initiator]] : [CODE[download]]
: [F[終点]] : [[空文字列]]
: [F[[[[CODE(HTTP)@en[Origin]]ヘッダー省略フラグ]]]] : [[真]]
: [F[同期フラグ]] : [[真]]
: [F[URL credentials利用フラグ]] : [[真]]
: [F[参照元]] :
[VAR[要素]]の[F[リンク型群]]に [CODE[noreferrer]] が含まれれば [CODE[no-referrer]]。
それ以外なら [CODE[client]]。 [SRC[仕様書に明記なし]]
: [F[参照元ポリシー]] :
[VAR[要素]]の [CODE(HTMLa)@en[referrerpolicy]] [[属性]]の状態 [SRC[仕様書に明記なし]]
]FIG]
[VAR[イベント]]を引き渡します。
[VAR[提案ファイル名]]は、[VAR[要素]]の提案ファイル名 (>>131) とします。
=== [67] [VAR[要素]]と[VAR[URL]]について [CODE(HTMLa)@en[ping]] [[属性]]の処理 (>>55) を実行します。
]FIG]
;; [78] [CODE(URI)@en[javascript:]] へのリンクなど、[[navigate]] ではうまく処理されても、
[[ダウンロード]]では処理できない場合もあります。
[128] [[ダウンロード]]の処理で使う[[起源]]は、
[VAR[要素]]の[F[節点文書]]の[F[起源][文書の起源]]と思われます。
[129] [[ダウンロード]]の処理は、[VAR[イベント]]の情報の一部も参照することがあります。
* 失敗の報告
[18] [[ハイパーリンクをたどる]]、または[[ハイパーリンクをダウンロード]]する時に
[[URLの解決]]で失敗したら、[[利用者エージェント]]は次のいずれかの動作を選べます
[SRC[>>5, >>40]]。
[FIG(list)[
- [19] [[利用者エージェント]]依存の方法で[[利用者]]に[[誤り]]を報告します。
- [22] [[タスク]]を[[タスクキューに追加]]します。
[FIG(list members)[
[FIGCAPTION[
[[タスク]]
]FIGCAPTION]
: [VAR[処理]] :
[FIG(steps)[
= [20] [[navigate]] します。
[FIG(list members)[
: [VAR[新しい[[資源]]]] : エラーを説明したページ
: [VAR[[[navigate]] する[[閲覧文脈]]]] : [VAR[対象]]
]FIG]
]FIG]
: [VAR[タスク源]] : [[DOM操作タスク源]]
]FIG]
- [21] 何もしません。
]FIG]
;; [43] [[HTML Standard]] は、エラーページへの [[navigate]] (>>22) について、
[[ハイパーリンクをたどる]]際には新しい[[タスク]]、[[ハイパーリンクをダウンロード]]する際には同じ[[タスク]]で実行しています。
この違いが意図的なものなのかどうかは不明です。
;; [45] [VAR[対象]]は、[[ハイパーリンクをたどる]]場合には、その過程で選択した[[閲覧文脈]]です。
[[ハイパーリンクのダウンロード]]の場合は、 ([[HTML Standard]] にはなぜか明記されていませんが)
[[リンク]]が含まれる[[閲覧文脈]]とするのが適当そうです。
[44] [[利用者]]の便宜や [[navigate]] の途中でのエラーとの動作の整合性を考慮すると、
[[ハイパーリンクをたどる]]場合にはエラーページに [[navigate]] して、
[[ハイパーリンクのダウンロード]]の場合には非[[モーダル]]な[[ダイアログ]]などでエラーを通知するのが良さそうに思えます。
[127] まったく何もしないのは、[[利用者]]を混乱させそうです。
* [CODE(HTMLa)@en[ping]] 属性の処理
;; [56] [CODE(HTMLa)@en[ping]] も参照。
[55] [CODE(HTMLa)@en[ping]] [[属性]]の処理とは、次のようにすることをいいます。
[FIG(steps)[
= [35] [VAR[要素]]が [CODE(HTMLe)@en[a]] [[要素]]または [CODE(HTMLe)@en[area]]
[[要素]]で、 [CODE(HTMLa)@en[ping]] [[属性]]を持つなら、
== [36] [CODE(HTMLa)@en[ping]] [[属性]]の処理を実行します。 [SRC[>>34]]
]FIG]
;; [58] [CODE(HTMLe)@en[link]] [[要素]]には、 [CODE(HTMLa)@en[ping]]
[[属性]]はありません。
;; [57] [[HTML Standard]] は[[ハイパーリンクをたどる]]処理の時にこれを行うことを求めていますが、
[[ハイパーリンクのダウンロード]]にはなぜか言及されていません。
[[Chrome]] は、[[ハイパーリンクのダウンロード]]でも [CODE(HTMLa)@en[ping]]
の処理を行っているようです。 [TIME[2016-04-12T12:16:22.900Z]]
* 歴史
[1] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 18:47:59 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>
[2] [CITE@en[Clarify the following/downloading hyperlink algorithms · whatwg/html@47e4aa0]]
([TIME[2015-11-05 17:14:33 +09:00]] 版)
<https://github.com/whatwg/html/commit/47e4aa05825df966848ca2c7773794576a130b88>
[3] [CITE@en[Add a 'noopener' <link rel> keyword and window feature · whatwg/html@2992ea9]] ([TIME[2015-11-12 22:04:20 +09:00]] 版) <https://github.com/whatwg/html/commit/2992ea921bc75e44157451a37a807a8ce0b9a884>
[4] [CITE@en[Editorial: clarify follow a hyperlink algorithm · whatwg/html@d22a9f1]]
([TIME[2016-03-26 12:44:39 +09:00]] 版)
<https://github.com/whatwg/html/commit/d22a9f12e1cc13a77504fa6482b7ded6ba790b54>
[70] [[Chrome]] では、[[ハイパーリンクをたどる]]場合、
[CODE[ping]] → [[ハイパーリンクをたどる]]実行後に発生した [[fetch]]
→ [CODE[href]] の順で [[fetch]] が行われます。
[[ハイパーリンクのダウンロード]]の場合、
[CODE[href]] → [CODE[ping]] → [[ハイパーリンクのダウンロード]]実行後に発生した
[[fetch]] の順で [[fetch]] が行われます。
[TIME[2016-04-12T12:37:05.300Z]]
;; [71] [[HTML Standard]] では [CODE[ping]] をどの時点で [[fetch]]
するべきなのか明確になっていません。
[144] [CITE@en[Integrate referrerpolicy for a, area, iframe, and link elements]]
([[estark37]]著, [TIME[2016-08-12 06:42:26 +09:00]])
<https://github.com/whatwg/html/commit/2e955e66ae7f815efe09ccac6445cfbdcbf643ab>
[146] [CITE@en[Allow <a>/<area> with download="" to not require user activation]]
([[domenic]]著, [TIME[2016-12-06 07:13:46 +09:00]])
<https://github.com/whatwg/html/commit/5de03c7b38e7b33a49f0dcf2bcef29e8eb9a2205>
[122] [CITE@en[Revert part of "Allow <a>/<area> with download="" to not require user…]]
([[zcorpan]]著, [TIME[2016-12-07 17:47:38 +09:00]])
<https://github.com/whatwg/html/commit/b359209579d79a713af88ecf24b9be8fb6168adf>
[8] [CITE@en[Revamp the rules for choosing a browsing context]]
([[annevk]]著, [TIME[2017-05-09 16:31:28 +09:00]])
<https://github.com/whatwg/html/commit/5578a0495f826a56597288b7ba1f71163f17cdd6>
[12] [CITE@en[Make noopener stop the copying of session storage]]
([[mystor]]著, [TIME[2017-09-06 06:56:03 +09:00]])
<https://github.com/whatwg/html/commit/a68a1f712b641981d7367d78758596b21a04521c>
[123] [CITE@en[Editorial: centralize target attribute processing]]
([[annevk]]著, [TIME[2017-09-06 16:17:43 +09:00]])
<https://github.com/whatwg/html/commit/0b31844d6dcc7ef49b3815f4f709d4c0284378f1>
[124] [CITE@en[Deduplicate finding the correct target attribute · Issue #2619 · whatwg/html]]
([TIME[2017-09-10 21:29:18 +09:00]])
<https://github.com/whatwg/html/issues/2619>
[125] [CITE@en[Editorial: centralize target attribute processing by annevk · Pull Request #3007 · whatwg/html]]
([TIME[2017-09-10 21:29:49 +09:00]])
<https://github.com/whatwg/html/pull/3007>
[147] [CITE@en[Centralize checks for <a>, <area>, <form>, and <link>]]
([[annevk]]著, [TIME[2017-09-22 21:04:25 +09:00]])
<https://github.com/whatwg/html/commit/f3c354add894e1ac01e3732ff976aa9874a77b3f>
[153] [CITE@en[<a>, <area>, <link>, and <form> behavior · Issue #2615 · whatwg/html]]
([TIME[2017-09-29 16:36:00 +09:00]])
<https://github.com/whatwg/html/issues/2615>
[154] [CITE@en[Centralize checks for <a>, <area>, <form>, and <link> by annevk · Pull Request #2613 · whatwg/html]]
([TIME[2017-09-29 16:41:20 +09:00]])
<https://github.com/whatwg/html/pull/2613>
[155] [CITE@en[Editorial: "return, but continue" cleanup for downloads and Worker]]
([[annevk]]著, [TIME[2018-01-24 22:04:54 +09:00]])
<https://github.com/whatwg/html/commit/0217e1d4cb1ace836f6ef72a402b643aa879fbed>
[156] [CITE@en[Editorial: "return, but continue" cleanup for downloads and Worker by annevk · Pull Request #3397 · whatwg/html]]
([TIME[2018-01-27 16:50:01 +09:00]])
<https://github.com/whatwg/html/pull/3397>
[158] [CITE@en[Editorial: inline noreferrer processing model]]
([[annevk]]著, [TIME[2019-02-12 21:54:42 +09:00]])
<https://github.com/whatwg/html/commit/f47773d25a7b1a3a03c1047bbc4037d08639cf9b>