[405] [DFN[[CODE(HTMLe)@en[object]] hack]] は、 [[HTML]] における[[段落]]内[[ブロック要素]]の扱いに関する問題の controversial な解決方法 (hack) の1つです。 * 問題の概要 [406] [[段落]]はしばしば[[リスト]]をはじめとした「[[ブロック]]的なもの」を含みます。例えば、 [PRE[ そのような例には (1) 敢えてそうマーク付けしなくてもさほど問題はないが、要素構造が意味的に不自然になるもの (2) そうマーク付けしなくては意味的あるいは見た目的に意図通りとならないもの などがあります。 ]PRE] といった[[文章]]は1つの「[[段落]]」の内部に[[リスト]]という「[[ブロック]]的なもの」が含まれます。 [407] [[HTML4]] では[[段落]]を表す [CODE(HTMLe)@en[[[p]]]] [[要素]]の内側に[[リスト]]を表す [CODE(HTMLe)@en[[[ul]]]] [[要素]]をはじめとする[[ブロック水準要素]]を含めることができないと規定されていました。 しかし、現実には先に挙げた例のように[[段落]]内に[[ブロック]]的なものが含まれることがあるため、 これをどう[[マーク付け]]するかが問題とされました。 * 解法の概要 [408] この問題には [CODE(HTMLe)@en[[[p]]]] [[要素]]を用いない、[[ブロック水準要素]]を用いない、 [[マーク付け]]可能な形に[[文章]]を変更する、 [CODE(HTMLe)@en[[[p]]]] [[要素]]の仕様を変更する、などいくつかの解法が提案されてきました。 [409] [CODE(HTMLe)@en[[[object]]]] hack は、 [CODE(HTMLe)@en[[[object]]]] [[要素]]の (おそらくは[[バグ]]である) 仕様を利用して [CODE(HTMLe)@en[[[p]]]] [[要素]]も[[ブロック水準要素]]も利用し、 [[文章]]を変更せず、かつ [[HTML4]] に[[適合]]する形で前記の問題を解決するものです。 [410] >>406 に示した例は [CODE(HTMLe)@en[[[object]]]] hack を用いた場合 [PRE(HTML example code)[
そのような例には などがあります。
]PRE] のように[[マーク付け]]します。 * 歴史 [411] [CODE(HTMLe)@en[[[object]]]] hack は歴史的に何度も独立に考案されてきました。 [1] elements containing other block-level elements]] elements containing other block-level elements]] ([TIME[2009-02-26 03:21:33 +09:00]] 版)