かつて某NHK で放送していた「趣味悠々 ホームページ」という番組の最終回。
「場合によって見栄えが違うのは何故?」という質問に対して、出演者の久住さんが「私のページも見栄えがだいぶ違うんですよ〜」と言い出しました。場合によって、画面の下方にあるメニューが「弁当箱のように」左に寄っているのだというのです。そして実際、スタジオのパソコンで見ると中央に揃えられているのに、久住さんのノートパソコンでは左に寄って見えていました。
そこで私の感想。
ああ、こりゃスタイルシートに対応してないブラウザだな。
しかし、この感想は間違っていたのです。
たまたま別の件でテーブルのセンタリングについて話していたとき、HTML4.0仕様書邦訳補完委員会メーリングリストアクティブメンバーの もは さんが、この久住さんのサイトのことを話して下さいました。恐ろしいことに、この「弁当箱のように」左に寄ったテーブルは、P でセンタリングされているというのです。
で、私も久住さんのサイトへ出向いて確認しました。
<P ALIGN=CENTER> <TABLE width="532" height="41" BORDER="1" CELLSPACING="2">
がーん。ホントだ。(笑)
一応解説しておきますが、少なくとも私の知る限り、P で テーブルをセンタリングできる HTML仕様は存在しません。HTML3.2 にせよ HTML4.0 にせよ、P の中身には TABLE なんて入れられませんから、件の構文にはこのように……
<P ALIGN=CENTER> </P> <TABLE width="532" height="41" BORDER="1" CELLSPACING="2">
<TABLE> の直前に </P> が補われなければなりません。センタリングのついた P 要素はテーブルの前で終了しますから、テーブルはセンタリングされないはずなのです(P の代わりに DIV を使えばセンタリングできます)。にもかかわらず、これでテーブルがセンタリングされてしまうのだとしたら、それは正しい位置に </P> を補うことが出来ない、ブラウザのバグです。
お分かりだと思いますが、これは、「ブラウザによって見た目が違う」例としては不適当なんですね。……って、そういう話じゃなくて。
じつは、これをセンタリングしてしまうのは Microsoft Internet Explorer です。4.01sp1 でもしっかりセンタリングしてくれます。迂闊に </P> を省略すると、どこに補われるのか想像もつきません。省略しないように心がけましょう(もっとも、バグつきブラウザなんかに構う必要なんかない、という意見もあるでしょうが)。
……言い忘れるところでしたが、前述のソース、あれは久住さんが悪いのではありません。犯人は、このソースを生成した某オーサリングツールです。
市販のオーサリングツールにはホントに酷いモノが多くて、TABLE も HR も何でもかんでも P で括ったりします。「インデント」を実行すると <BLOCKQUOTE> が挿入されたりします。これは酷い。
ひょっとして、こういうツールを作っている会社は、仕様書も WAIのアクセシビリティガイドラインも読んでないんでしょうか。ホント、何考えてるんでしょう。