- 締切済み
フレームのページが上下逆に表示されてしまいます。
Dreamweaver3でフレーム2分割のHPを作りました。 アップして1台のパソコンで表示すると正常に見られますが、もう1台のパソコンで見ると上下逆に表示されてしまいます。 更新させると正常の表示されます。 一体何が原因なのかさっぱりわかりません。 パソコンはどちらもWin98でブラウザはIEの6.0です。 下記はフレームセットのソースです。 原因のわかるかたがおりましたらよろしくお願いします。 ----------------------------------------------- <html> <head> <titleタイトル</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <frameset rows="420,180" frameborder="0" border="0" framespacing="0" cols="*"> <frame src="main.html" name="mainFrame" scrolling="yes" noresize> <frame src="menu.html" name="bottomFrame" noresize scrolling="yes"> </frameset> <noframes> <body bgcolor="#FFFFFF"><DIV ALIGN=CENTER></DIV> </body></noframes> </html> ------------------------------------------------
- みんなの回答 (5)
- 専門家の回答
みんなの回答
こういうやり取りは本旨からは少々逸れていると思われますが、一応参考までに。 私としては、W3Cのページにおいて記述されている文章は、通常のHTML文書においては、html要素の直下に子要素としてhead要素とbody要素を配置するという前提に対し、Frameset DTDにおいてはhead要素は通常のHTMLと同じように配置するが、その次には「body要素に置き換えてframeset要素を配置する」、つまり、Frameset DTDを宣言したHTMLでは、html要素の直下の子要素はhead要素とfreameset要素の二つになる、と言う意味と解釈しています。 ですので、この文章がフレームをセットするHTML文書内にbody要素は絶対に配置してはならないという意味とは捉えていません。 また、HTML 4.01のDTDを見る限りでは、私の解釈が間違っていなければ、Frameset DTDを宣言している場合には、noframes要素の子要素としてbody要素が配置できるとされています(参考URL)。 ですので、Frameset DTDのHTMLでは、html要素の直下の子要素としてはbody要素を配置できないが、noframes要素の直下にbody要素を配置することはできる、と解釈しました。 重複になりますが、HTMLでは、bodyタグの記述は省略は一応可能ですので、省略しても良いケースもあるでしょう。 なお、蛇足ですが、私が作ったDTD HTML 4.01 Framesetを宣言したファイルでは、noframes要素の直下にbody要素を記述していますが、HTML 4.01 Validatorにかけて、Validという結果がでることを確認しています。 以上が、先の回答における根拠です。 私の解釈がまったく間違っていないという保証はありませんが、 参考までに。
- OwO
- ベストアンサー率46% (7/15)
以下に示すのは W3C で勧告されている Frameset DTD の一部(コメント部分)です。 翻訳すればわかるとおり「FRAMESET 要素は、BODY 要素を置き換える」と書いてあります。 No.3 で lead1976 さんがおっしゃる「noframes要素の中にbodyタグを記述するのは誤りではないと思います」という根拠は何でしょうか?(今後のためにお願いします) 23 Frameset Document Type Definition This is the HTML 4.01 Frameset DTD, which should be used for documents with frames. This DTD is identical to the HTML 4.01 Transitional DTD except for the content model of the "HTML" element: in frameset documents, the "FRAMESET" element replaces the "BODY" element. Draft: $Date: 1999/12/24 23:37:49 $ Authors: Dave Raggett <dsr@w3.org> Arnaud Le Hors <lehors@w3.org> Ian Jacobs <ij@w3.org> Further information about HTML 4.01 is available at: http://www.w3.org/TR/1999/REC-html401-19991224 *質問からそれた話題になってしまい申し訳ありません。
質問文のソースは、完全なソースのコピーではないですよね? title要素の開始タグが「>」で閉じられていないのですが、これはタイプミスと判断していいでしょうか。 それ以外のソースを見る限りでは、原因として疑わしいのは、frameset要素の開始タグ内に、「cols="*"」という属性があることなのではないかと推測します。 ただ、こちらでは現象が再現していませんので、これが的確かどうかは全く自信はありませんが… あと、ちょっと反論めいた話を失礼しますが、noframes要素の中にbodyタグを記述するのは誤りではないと思います。 noframes要素の内容は、フレームに対応していないブラウザではそのままそのHTMLファイルの内容として解釈されますので、通常のページと同様に解釈されるように記述する必要があると思います。 ですので、bodyタグを記述することは間違いとはいえないでしょう。 ただし、HTMLの記述の仕方として、<body>タグの記述は省略が可能ですので、記述しない場合でも正常に反映される可能性が高いと思います(確か省略できるケースでも、タグの省略は非推奨のことが多いと思いましたが…)。 個人的な意見としては、bodyタグについては、記述しておいた方が良いと思います。 失礼しました。
- OwO
- ベストアンサー率46% (7/15)
まず、HTML に間違いがあります。 ●<title></title> 内に日本語などの2バイト言語を使用する場合、<meta> タグで言語コードを指定した後に記述しないと文字化けすることがあります。 ●<noframes>~</noframes> タグは <frameset>~</frameset> タグ内に記述しなければいけません。 ●HTML ドキュメント内には <frameset> または <body> のどちらか一つしか記述できません。つまり、この場合、<noframes>~</noframes> 内の <body>~</body> は要りません。 これらのミスを修正して確認してみてください。 それから、このフレームページは上がメインページで下がメニューですよね? 修正した後、直らないときは <frame src="XXX.html" name="mainFrame" scrolling="yes" noresize> の name を違う名前に変えてみてください。 (メニューページ等のリンクの target 名も修正することも忘れないでくださいね)
お礼
お礼が遅くなりまして、大変失礼しました。 ソフト頼りでやっているので困ったものです(^-^; <body>~</body>はいらないのですね。 みなさんの回答をひとつずつ試してみたいと思います。 上下逆さに表示される家のPCが今見られないので、見られましたら試してみます。 そのあと締め切らさせていただきます。 ありがとうございました。
私もいまいちhtmlの正しい書き方については勉強不足なのですが、以下のソースではどうでしょうか。 といっても frameset の cols を無くしただけですけど。 というのも、FrontPage2000でソースコードを直接編集していて、「cols="*"」を入力するとframesetの記述が変な挙動を出したので・・・ まぁ考えてみれば、フレームを分割する場合は縦か横のどちらかにしか分割しないわけでして、「田」のように縦横に分割する場合は2つのframesetを使用したりしますよね。 てことなので技術的な根拠は示せませんが、試してみてください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>タイトル</title> </head> <frameset rows="420,180" frameborder="0" border="0" framespacing="0" frameborder="0"> <frame name="mainFrame" src="main.html" scrolling="yes" noresize target="_self"> <frame name="bottomFrame" src="menu.html" scrolling="yes" noresize target="main"> <noframes> <body bgcolor="#FFFFFF"> <div align=center></div> </body> </noframes> </frameset> </html>
お礼
お礼が遅くなりまして、大変失礼しました。 私はHTMLもろくに知らないのにHPを作っていまして。 ほんとソフト頼りでやっているので困ったものです(^-^; 上下逆さに表示される家のPCが今見られないので、見られましたら試してみます。 そのあと締め切らさせていただきます。 ありがとうございました。
お礼
lead1976さん、いつも回答ありがとうございます。 余談ですが今週からJavascriptのちょっとした講座に通うことになりました。 しかしその前にHTMLですね(--;) 現在上下逆さに見える家のPCが使えないので、見られるようになったら試してみて締め切らさせていただきます。 ありがとうございました。