[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]]]] [[要素]]

[HISTORY[
- [CODE(HTMLa)@en[[[tabindex]]]] [[属性]]が指定されている場合
- [CODE(HTMLe)@en[[[th]]]] [[要素]] ([[整列インターフェイス[CODE(HTMLe)@en[th]]要素]]の場合)
- [CODE(HTMLe)@en[[[menu]]]] [[要素]] ([CODE(HTMLa)@en[[[type]]]] が [CODE(HTML)@en[[[toolbar]]]])
]HISTORY]

]FIG]

[6] [[HTML5]] の [CODE(HTMLe)@en[[[object]]]] [[要素]]の定義の章には[[コメント]]として、
本当は[[閲覧文脈]]や[[プラグイン]]の埋め込みに使われる場合には[[対話的内容]]としたいものの、
構文的に判断がつかないのでそう定義していない、との記述があります。

[13] [[SVG]] や [[MathML]] の[[要素]]も本来場合によっては[[対話的内容]]として扱わなければならないはずですが、
現在どの仕様書にもそのような規定はありません。

[EG[
[14] 例えば [[HTML]] の[[リンク]]の中に [[SVG]] の[[リンク]]を含められるべきではありません。
]EG]

[HISTORY[
[17] [CODE[tabindex]] [[属性]]を指定した[[要素]]は [CITE[HTML5]]
の頃は[[対話的内容]]でしたが、
いつの間にか削除され、関係する規定に別個に記述されるようになりました。
]HISTORY]

[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[tabindex]] [[属性]]のある[[要素]]を禁止
-- [CODE(HTMLe)@en[[[a]]]] [[要素]]も禁止
- [CODE(HTMLe)@en[[[button]]]] [[要素]]
-- [[対話的内容]]と [CODE[tabindex]] [[属性]]のある[[要素]]を禁止
- [CODE[optgroup]] [[要素]]の[[子供]]の [CODE(HTMLe)@en[[[legend]]]] [[要素]]
-- [[対話的内容]]と [CODE[tabindex]] [[属性]]のある[[要素]]を禁止
- [CODE(HTMLe)@en[[[canvas]]]] [[要素]]
-- [[対話的内容]]は原則禁止、ただし複雑な例外あり
-- [CODE[tabindex]] [[属性]]のある[[要素]]は除外されていない (使える)
- [[[CODE[option]]要素内側内容要素]]
-- [[対話的内容]]と [CODE[tabindex]] [[属性]]のある[[要素]]を除外

]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>

[15] [CITE@en[summary element definition does not reflect implementations · Issue #2246 · whatwg/html]]
([TIME[2017-01-20 16:58:03 +09:00]])
<https://github.com/whatwg/html/issues/2246>

[16] [CITE@en[Define what tabIndex returns when the tabindex attribute is not set]]
([[rakina]]著, [TIME[2019-07-10 03:13:55 +09:00]])
<https://github.com/whatwg/html/commit/15cf23a55d629e0b1286302c19634833a89292ab>