/
782.txt
86 lines (68 loc) · 4.78 KB
/
782.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
[1] [DFN[[RUBYB[対話的内容][interactive content]]]]は、[[利用者]]との[[対話]]を特に想定している[[内容]]です
[SRC[[[HTML5]]]]。
* 仕様書
- [2] [[HTML5]] <http://www.whatwg.org/specs/web-apps/current-work/#interactive-content-0>
* 一覧
[3] [[対話的内容]]に分類されるものはすべて[[要素]]です。大雑把に言って、
一般的な[[視覚利用者エージェント]]で[[利用者]]が[[クリック]]して動作させられる[[要素]]が[[対話的内容]]に分類されています。
[FIG(list middle)[
- [CODE(HTMLe)@en[[[a]]]] [[要素]] ([CODE(HTMLa)@en[[[href]]]] [[属性]]つき)
- [CODE(HTMLe)@en[[[img]]]] [[要素]] ([CODE(HTMLa)@en[[[usemap]]]] [[属性]]つき)
- [CODE(HTMLe)@en[[[iframe]]]] [[要素]]
- [CODE(HTMLe)@en[[[embed]]]] [[要素]]
- [CODE(HTMLe)@en[[[object]]]] [[要素]] ([CODE(HTMLa)@en[[[usemap]]]] [[属性]]つき)
- [CODE(HTMLe)@en[[[video]]]] [[要素]] ([CODE(HTMLa)@en[[[controls]]]] [[属性]]つき)
- [CODE(HTMLe)@en[[[audio]]]] [[要素]] ([CODE(HTMLa)@en[[[controls]]]] [[属性]]つき)
- [CODE(HTMLe)@en[[[label]]]] [[要素]]
- [CODE(HTMLe)@en[[[input]]]] [[要素]] ([CODE(HTML)@en[[[<input type=hidden>]]]] 以外)
- [CODE(HTMLe)@en[[[button]]]] [[要素]]
- [CODE(HTMLe)@en[[[select]]]] [[要素]]
- [CODE(HTMLe)@en[[[textarea]]]] [[要素]]
- [CODE(HTMLe)@en[[[keygen]]]] [[要素]]
- [CODE(HTMLe)@en[[[details]]]] [[要素]]
- [DEL[[CODE(HTMLe)@en[[[th]]]] [[要素]] ([[整列インターフェイス[CODE(HTMLe)@en[th]]要素]]の場合)]]
- [CODE(HTMLa)@en[[[tabindex]]]] [[属性]]が指定されている場合
- [DEL[[CODE(HTMLe)@en[[[menu]]]] [[要素]] ([CODE(HTMLa)@en[[[type]]]] が [CODE(HTML)@en[[[toolbar]]]])]]
]FIG]
[6] [[HTML5]] の [CODE(HTMLe)@en[[[object]]]] [[要素]]の定義の章には[[コメント]]として、
本当は[[閲覧文脈]]や[[プラグイン]]の埋め込みに使われる場合には[[対話的内容]]としたいものの、
構文的に判断がつかないのでそう定義していない、との記述があります。
[13] [[SVG]] や [[MathML]] の[[要素]]も本来場合によっては[[対話的内容]]として扱わなければならないはずですが、
現在どの仕様書にもそのような規定はありません。
[EG[
[14] 例えば [[HTML]] の[[リンク]]の中に [[SVG]] の[[リンク]]を含められるべきではありません。
]EG]
[10] >>9 には [[JSON]] 形式の[[対話的内容]]の一覧が含まれています。
[REFS[
- [9] [CITE[data-web-defs/data/elements.json at master · manakai/data-web-defs]] ([TIME[2014-04-05 12:46:04 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/data/elements.json>
]REFS]
* 利用できる文脈と内容モデル
[4] [[内容]]を持てる[[対話的内容]]のいくつかは、
[[子孫]]に[[対話的内容]]を含めることが禁止されています。
[FIG(middle list)[
- [CODE(HTMLe)@en[[[a]]]] [[要素]]
-- [[対話的内容]]を禁止
-- [CODE(HTMLe)@en[[[a]]]] [[要素]]も禁止
- [CODE(HTMLe)@en[[[button]]]] [[要素]]
-- [[対話的内容]]を禁止
- [CODE(HTMLe)@en[[[canvas]]]] [[要素]]
-- 複雑な制限あり
]FIG]
[5] [CODE(HTMLe)@en[[[button]]]] [[要素]]によって表現される[[ボタン]]を例に採ると、
[CODE(HTMLe)@en[[[button]]]] [[要素]]が入れ子になっていると、内側の [CODE(HTMLe)@en[[[button]]]]
[[要素]]が[[レンダリング]]される領域を[[クリック]]した時の動作がどうなるべきかが問題となります。
実際の動作は仕様上規定されてはいますが、そもそも[[意味論]]的に「[[対話的]]」
なものを入れ子にすることが適当か疑わしく、実益もほとんどないので、
[[対話的内容]]の入れ子は認められていないものと思われます。
[12] [CODE(HTMLe)@en[[[a]]]] [[要素]]の場合、それに加えて [[HTML構文]]において[[入れ子]]にできないという制限もあるので、
混乱を防ぐために[[入れ子]]を禁止しているようです。
* 歴史
[REFS[
- [7] [CITE@en[Web Applications 1.0 r7600 Until we have more concrete implementation experience, make the whole <th> of a sortable table interactive.]]
( ([TIME[2012-12-28 07:56:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7599&to=7600>
- [8] [CITE@en[Web Applications 1.0 r8490 The tabindex='' attribute makes an element interactive.]] ([TIME[2014-02-21 08:30:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=8489&to=8490>
]REFS]
[11] [CITE@en[Fix #168: <a> without href is not interactive content · whatwg/html@528a223]]
([TIME[2016-01-30 20:25:50 +09:00]] 版)
<https://github.com/whatwg/html/commit/528a22340a4bdc6ca0b0e190dfd239989123df9b>