こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

フレームページが表示できません

以下のようなフレームページを作成したのですが、mac(safari)ではきちんと表示されるのに、windows(Internet Exprorer)ではページが表示されません。
ソースをチェックしたところ、特にエラーは出ないのですが…

どこが問題でしょうか?
お分かりになる方、ぜひアドバイスおねがいします。



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="ja">

<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">
<meta name="generator" content="Adobe GoLive 6">

<title>illustration.com</title>
<link href="sample.css" rel="stylesheet" media="screen">
</head>
<body>
<frameset cols="250,*" border="0">
<frame name="gallery-top" noresize src="gallery-index01.html" frameborder="no">
<frame name="gallery-main" noresize src="gallery-main.html" frameborder="no">
<noframes>
<p></p>
</noframes>
</frameset>
</body>
</html>

投稿日時 - 2009-02-21 19:47:07

QNo.4737292

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> macでもwindowsでも全く同じ画面で表示したい場合には、どのような方法がありますでしょうか?

「全く同じ画面で表示したい」というご質問の意味が今ひとつよくわかりませんが、今回の様なトラブルは、OSがどうこうという問題以前に先ず、HTMLの文法上の決まり事を無視していたというそもそもの出発点から間違っていた事に依るものです。勿論、環境(主にブラウザとOSの種類・ヴァージョンに依る組み合わせ。ですから一言で「macでもwindowsでも」と仰ってもかなりの数の組み合わせが考えられるわけです。)に依るCSSの解釈の違い等により表示結果に差が出る事もありますが、それはあくまでスタイルの差に過ぎず、解決するにはHTMLの文法とはまた別の知識やスキルが必要です。そして、それは原因を見極めつつケースバイケースで対応しなければならないものであり、これさえしておけば全部大丈夫、という様な簡単な「方法」あるわけではありません。
※ちなみに印刷物じゃないのでどのみち「全く同じ画面」にはなりません。閲覧環境が違えば表示結果も大なり小なり異なります(MacとWindowsでは初期設定のフォントからして同じではないですしね。たとえCSSでフォントを指定してあっても閲覧者側の端末にインストールされてなければ無意味ですし)。

とにかく先ず必要な事は、文法に則った論理構造のきちんとしたHTML文書を書ける様になる事です。仕様書や解説サイト等をよく読んで正しい知識を身に付けるところから始められる事をお奨めします。それをクリアした段階で、次はCSSに関する知識とテクニックを同様に段階を踏んで習得されて行く…というのが適切な「方法」だと思います。

投稿日時 - 2009-02-23 13:52:16

お礼

確かに、ちゃんと理解できていないのに手をつけていたところがあったと思います。

改めて 基礎からきちんと習得します。
ありがとうございました。

投稿日時 - 2009-02-25 21:00:41

ANo.1

> ソースをチェックしたところ、特にエラーは出ないのですが…

それは、質問文中で引用されているソースのDTD宣言通り、HTML 4.01 Transitionalとしてチェックされたのですか?
であればまずそこからして適切ではないですね。質問者様が今問題になさっている文書は「フレームページ」そのものなのですから、DTD宣言はHTML4.01 Framesetでなければならず、当然記述もそのDTD宣言に準じたものでなければなりません。
HTML4.01 Framesetとして相応しいDTD宣言は下記です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

質問文中のソースのDTD宣言を上記に変更した上で再度文法チェッカーにかけてみて下さい。「フレームページ」として適切でない記述になっている事がすぐおわかりになると思います。下記は某有名チェックサイトでのチェック結果から抜粋したエラーです。

line 12: <BODY> を 3行目の <HTML>~</HTML> 内に書くことはできません。
line 13: <FRAMESET> には TITLE 属性を指定するようにしましょう。
line 14: <FRAME> の FRAMEBORDER の属性値 `no` は正しくありません。`1` または `0` でなければなりません。
line 14: <FRAME> には TITLE 属性を指定するようにしましょう。
line 15: <FRAME> の FRAMEBORDER の属性値 `no` は正しくありません。`1` または `0` でなければなりません。
line 15: <FRAME> には TITLE 属性を指定するようにしましょう。
line 17: ここに <BODY> が省略されているようです。省略しないようにしましょう。
line 17: <P> と </P> の間が空です。
line 18: </NOFRAMES> の前に </BODY> が省略されているとみなします。
line 20: </BODY> に対応する開始タグ <BODY> が見つかりません。

上記の意味はおわかりでしょうか?
まず大きな構造上の間違いは、framesetとbodyの位置関係です。framesetはhtml要素の子要素であり、フレームでない文書でのbody要素に代わる要素です。なので、質問者様のソースの様に、framesetをbodyの子要素とする事はできません。body要素を記述するとしたら、フレーム非対応の環境の際に表示する内容を記述するnoframes内が妥当です。ですので、最低限の箇所を修正した記述としては以下の様になります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
(省略)
</head>

<frameset cols="250,*" border="0" title="hoge">
<frame name="gallery-top" noresize src="gallery-index01.html" frameborder="0" title="hoge1">
<frame name="gallery-main" noresize src="gallery-main.html" frameborder="0" title="hoge2">

<noframes>
<body>
<p>代替内容を具体的に記述</p>
</body>
</noframes>

</frameset>
</html>

とりあえず、適切な文書構造に修正してみてから再度検証してみてはいかがですか?フレーム内に表示される実際の文書の方の内容が不明な時点では、これぐらいしかアドバイスできないかと思います。もし、フレームページとしての記述が適切になったにも関わらず、相変わらず環境による表示の不具合が起きる様でしたら、それはフレームの中味のHTMLの方に何らかの問題がある可能性が高いです。

それから、エラーではありませんが、フレームページそのものに対してCSSを参照しているのもちょっと不思議に思えます。その必要はありますか?noframesの時の内容用のスタイルですか?

投稿日時 - 2009-02-21 21:01:12

お礼

ご丁寧なアドバイスを ありがとうございます。

おかげで、初心者の私にも何がそもそもの間違えなのかが理解できました。
修正していただいたものを参考に訂正したところ、
きちんと表示されるようになりました。

それから、(初歩的な質問なのかもしれませんが)
macでもwindowsでも全く同じ画面で表示したい場合には、どのような方法がありますでしょうか?
お時間あれば、ご回答おねがいいたします

投稿日時 - 2009-02-22 09:29:21

あなたにオススメの質問