レイアに HTML を出力する( 2 )
最終更新日:

前へ 目次 次へ

 今回は前回から引続きレイアに HTML を出力する際の食えない事情です。


 Web ページの作成時、そのレイアウト構成の設計は 私のように基本的にフローレイアウトに任せるズボラ派から、 どのようなブラウザで見ても同じように見えるようにする緻密派まで、 様々でしょう。

前者の場合は置いといて(笑)、 後者の場合に DHTMLを使用すると結構苦労する場面に遭遇します。 その中の1つにスタイルの問題があります。

つまり、厳密な構成のページを作ろうとすればフォントサイズなど ブラウザ依存の部分を排除したくなります。 また、DHTML にしようとすれば、レイアの内容を変更したくなったりします。
...そこには Netscape の「闇」が待ち受けています。

 議論を簡単にするために writeLayer(div,html) という関数を想定します。
この関数は div で指定されたレイアオブジェクトに html で 指定された HTMLを書き込みます。( 書き込み手法は前回の話題でした f(^^;

一般に、出力する HTML で使用している文字サイズを特定のサイズにするには、 スタイルシートでフォントサイズを指定します。 然し、指定方法にはいろんな方法を即座に思いつきます。

1) 出力する HTML にスタイルを定義する
writeLayer(div,
     '<style type="text/css">'
    +'#f{ font-size:24pt; }'
    +'</style>'
    +'<font id="f">Hello!</font>');
2) インラインでスタイルを定義する
writeLayer(div,'<font style="font-size:24pt;">Hello!</font>');
3) 事前に定義してあるスタイルを指定する
<style type="text/css"><!--
#f{ font-size:24pt; }
--></style>
    :
writeLayer(div,'<font id="f">Hello!</font>');

上記の例では、1) と 2) は1回目はうまく動作するように見えます。 しかし、これは危険です。

1) は
2回目には異常終了しますし、
2) は
最後に出力したレイア以外は2回目の出力は無効になります。( Windows版です )
3) は
正常に動作しますが、1) や 2) の形式と組合わせないことが条件になります。
1) や 2) の形式混在すると 3) の出力は無効になります。

 即ち、何らかの理由でスタイルを使用した HTML を出力したい場合、 使用する可能性のあるスタイルは全て、該当のページのロード時に定義する 必要があることになります。

前へ 目次 次へ


Copyright(c) 1999 ShinSoftAll rights reserved.