プロが教える店舗&オフィスのセキュリティ対策術

firefox 3 mac で下記ページのindex.htmlにnoframeの内容が表示されてしまいます。
http://homepage.mac.com/jetsetter/jet-set/jetset …

どなたか詳しい方アドバイスをお願いします

safari 4 mac では正常表示されます

A 回答 (4件)

ソースを見てみましたが、これはちょっと・・・。



Safari以外のFirefox, Opera, IEではフレームが表示されないですね。Safariは、間違って書かれたものを、書いた人の意図を推測して補って表示しているようです。これは後で述べるように、仕様から外れた動作です。Safariで「正常」に表示されている思わない方が良いのでしょう。

ご質問にあるページは次のような構造をしています。

---

<HTML>

<HEAD></HEAD>

<body>

<FRAMESET rows="140,*">
<FRAME src="index/logo.shtml">
<FRAMESET cols="155,*">
<FRAME src="index/subindex.html">
<FRAME src="index/index.html">
</FRAMESET>

<NOFRAME></NOFRAME>

</body>

</HTML>

---

これを以下のように変えると、だいぶまともになります。少なくとも、フレームは表示されるようになるでしょう。

---

<html>

<head></head>

<frameset rows="140,*">
<frame src="index/logo.shtml">
<frameset cols="155,*">
<frame src="index/subindex.html">
<frame src="index/index.html">
</frameset>
<noframes></noframes>
</frameset>

</html>

---

変更箇所は以下の通りです。

1. "noframe"ではなく"noframes"
2. noframes要素は一番外側のframeset要素の子要素にした
3. 一番外側のframeset要素の子要素であるframeset要素を閉じた。(対応する</frameset>を追加)
4. body要素を削除

フレームが表示されるかどうかは4番で決まっているようです。事実、W3Cの仕様書(参考URL)には

"Elements that might normally be placed in the BODY element must not appear before the first FRAMESET element or the FRAMESET will be ignored."

と書かれています。この仕様に従うと、ご質問のページではframeset要素は無視される、すなわち、フレームは表示されないことになるわけです。


最後に、おせっかいではありますが、もしご質問のページをご質問者様が書かれたのであれば、参考になさる本やサイトは別のものにした方がよいかもしれません。上の短い中にも修正要素がこれだけあり、ざっと見ただけでも他にもたくさん直すべきところが見当たります。

参考URL:http://www.w3.org/TR/html4/present/frames.html#h …
    • good
    • 0
この回答へのお礼

HTMLの詳細まで、ご丁寧に教えていただきありがとうございます。
とてもわかりやすく、助かりました。

元々の制作者ではないので、構造を理解していませんでした。

おかげさまで、無事、解消できました。ありがとうございました。

お礼日時:2009/05/18 22:44

http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
で確認するのが一番手っ取り早いでしょう。
エラーが結構見付かりました。
又、Vista Firefox3.0.10環境下でのアクセスでは「logo_shtml」の展開選択ダイアログが出ますね。
    • good
    • 0
この回答へのお礼

ご丁寧におしえていただき、ありがとうございました。

私のfirefox3.0.1 mac でもダイアログが出ました。

調べて修正してみます。ありがとうございました。

お礼日時:2009/05/18 22:53

<META name="META HTTP-EQUIV="CONTENT-TYPE"


CONTENT="text/html;CHRSET=iso-2022-jp">

がおかしいわ。
いろいろ。
最低でもダブルクォーテションの数は
あわせましょう。

たぶん
<META HTTP-EQUIV="CONTENT-TYPE"
CONTENT="text/html; CHARSET=iso-2022-jp">
を書きたいんだと思うけど。
    • good
    • 0
この回答へのお礼

ご丁寧に教えていただきありがとうございます。

重複していた箇所をご指摘の通り修正しました。どうもありがとうございました。

お礼日時:2009/05/18 22:41

IEでも同じ現象ですね。



framesetの場合bodyタグは不要です。
また、frameset(2個ある)の外側のタグを閉じ忘れているようです。

<body>及び</body>を取り除くと表示できませんか?
    • good
    • 0
この回答へのお礼

ご丁寧に教えていただきありがとうございます。

無事、解消できました。ありがとうございました。

お礼日時:2009/05/18 22:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!