FRAMESETの使い方

いったい誰が始めたのか知らないが、フレームを組むにあたってよくあるHTMLの間違った書き方。

<HTML>

<HEAD>
<TITLE>文書の標題</TITLE>
</HEAD>

<FRAMESET cols="20%, 80%">

     <FRAME src="menu.html">
     <FRAME src="intro.html">
	
</FRAMESET>

<NOFRAME>
<BODY>
フレーム機能を持つブラウザで見てください。
</BODY>
</NOFRAME>

</HTML>

FRAMESET要素は、BODY要素の代わりに使うものです。つまり、

ということ。それから、

これらを正しく書かないと、エラーになる可能性があります。

そしてごく基本的な事として、そもそもHTML文書には、HTMLのバージョンを示す文書型宣言が必要です。必要なのに書いてない場合が多いのですが。

rfc1866(HTML 2.0 )に従えば、HTML文書が文書型宣言を欠く場合は、HTML 2.0 として解釈されることになります。実際にはWebブラウザが独自の解釈をして、勝手にHTMLのバージョンを決めてしまっているようです。ということは、Webブラウザが文書型宣言を適当に補っていることになりますけれども、所定の要素のみを使って文書の構造を表現するというHTMLの成り立ちからすると、これは順序が逆というものです。

では、以上の点を頭に入れて、W3Cの提案を見てみましょう。HTML 4.0 では、次のようになっています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
     "_THE_LATEST_VERSION_">
  <HTML>
  <HEAD>
  <TITLE>A frameset document with NOFRAMES</TITLE>
  </HEAD>
  <FRAMESET cols="50%, 50%">
     <FRAME src="main.html">
     <FRAME src="table_of_contents.html">
     <NOFRAMES>
     <P>Here is the <A href="main-noframes.html">
              non-frame based version of the document.</A> 
     </NOFRAMES>
  </FRAMESET>
  </HTML>

<BODY></BODY>が<FRAMESET></FRAMESET>に置き換わっていますね。実はこのためにW3Cは、Framesetを使うDTDを別に用意しなくてはならなくなりました。BODYとFramesetを同居させたDTDをつくることは技術的に無理があったためです。
文書型宣言が2行にまたがっているのは、HTML 4.0 での新しい提案です。2行目にURLを指定するスタイルがおすすめだとか。うーん、これはしかし、まだどのWebブラウザも実装しちゃいないでしょうね。

ともあれ、HTML 4.0 が確定したので、堂々とFRAMESETを使用できることになりました。魔術幻燈からの提案として、日本語環境においてFRAMESETを用いるときは、以下のようにしてはいかがでしょうか。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML LANG="JA">
<HEAD>
<META HTTP-EQUIV="Content-Type"
 CONTENT="text/html;charset=ISO-2022-JP">
<META HTTP-EQUIV="Keywords"
 LANG="JA"
 CONTENT="検索用キイワード">
<TITLE LANG="JA">文書の標題</TITLE>
<LINK REL="Copyright" REV="Made"
 TITLE="&copy; 1998 作者名"
 HREF="mailto:メールアドレス">
</HEAD>
<FRAMESET ROWS="50%,50%">

	<FRAME SRC="top.html">
	<FRAME SRC="bottom.html">
	
<NOFRAMES>

<H1>見出し</H1>

<P>ここには、フレームで表示されるはずのindexなどの内容を写します。<BR>
または、<A HREF="行く先のURL">おそれいりますが、ここを押して
移動してください。</A>などとして、目的のページへ移動させれば手間は省けますが、
これはいささか不親切な方法だと言えます。</P>

<ADDRESS>
&copy; 1998 作者名<BR>
<A HREF="mailto:メールアドレス">メールアドレス</A>
</ADDRESS>

</NOFRAMES>

</FRAMESET>
</HTML>

これはISO-2022-JP文字セット(もっぱら「JISコード」と呼ばれています)を用いて書いた場合で、Shift_JIS文字セット(「MS 漢字」とも呼ばれています)を用いて書いた場合には、META要素を

<META HTTP-EQUIV="Content-Type"
 CONTENT="text/html;charset=Shift_JIS">

と書き換える必要があります。

Copyleft 1998 魔術幻燈
poetlabo@cap.bekkoame.or.jp