トップページでフレーム解除するには?

[上に] [前に] [次に]
杉山 [HomePage] 2000/02/09(水) 00:10:18
フレームの中に自分のトップページが現れるようなリンクが張られている場合、
<BODY onload="if(top.frames.length>0){top.location.href=location.href}">
のようにしてフレームを解除することが出来ました。

しかし、自分のトップページがフレームで構成されている場合うまく行きません。
<BODY>タグに上記文を書いても、<BODY>タグが<NOFRAMES></NOFRAMES>間に
あるので無視されてしまうようです。
また、<NOFRAMES>が始まる前の部分に<BODY>タグを移動してみましたが、これもうまく行きませんでした。
<FRAMESET COLS="120,*" onload="if(top.frames.length>0){top.location.href=location.href}">
のように<FRAMESET>内に書いても駄目でした。
なにか良い方法があれば御教授下さい。

Mugi [E-Mail] [HomePage] 2000/02/09(水) 00:23:13
これを試してみてください。

<FRAMESET COLS="120,*" onload="if(top!=self){top.location.href=location.href}">

2000/02/09(水) 00:24:44
onLoadで呼び出さなければ良いのでは?
<HTML>
<HEAD><TITLE></TITLE>
<SCRIPT LANGUAGE="JavaScript"><!--
if(top.frames.length > 0){
    top.location.href=location.href
}
//--></SCRIPT>
</HEAD>
<FRAMESET COLS="20,*">
<FRAME SRC="./index.html">
<FRAME SRC="./index2.html">
</FRAMESET>
</HTML>

あと,noframesの中にbody書くのはNG.

杉山 2000/02/09(水) 10:48:04
[[解決]]
Mugiさん、猫さん、どちらの方法もうまく行きました。ありがとうございました。

猫さんの
>あと,noframesの中にbody書くのはNG.
とのことですが、以下の様なものはNGということですか?
<FRAMESET COLS="20,*">
<FRAME SRC="./index.html">
<FRAME SRC="./index2.html">
<NOFRAMES>
<BODY BGCOLOR="#ffffff" TEXT="#333333">
ノンフレーム用の目次はこちら
(アドレス記述)
</BODY>
</NOFRAMES>
</FRAMESET>
私、このようにやってて別段支障がないようですけど・・・。

EMI 2000/02/09(水) 11:17:57
>あと,noframesの中にbody書くのはNG.
こっちはOKです。noframesの中には、body要素以外配置できません。(HTML4.0/4.01 Framesetでは)

NGは
>また、<NOFRAMES>が始まる前の部分に<BODY>タグを移動してみましたが、これもうまく行きませんでした。
こっちの方ですね。

2000/02/09(水) 23:14:25
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
では<NOFRAMES>が<BODY>だと考えるのが普通です.
普通という表現は適切ではないかもしれませんが.

<FRAMESET COLS="20,*">
<FRAME SRC="./index.html">
<FRAME SRC="./index2.html">
<NOFRAMES>
ノンフレーム用の目次はこちら
(アドレス記述)
</NOFRAMES>
</FRAMESET>
こう書くべきですかね.HTML4 Framesetだと.
HTMLバージョンを考えないなら,どうとでも好きなように書いて問題無いと思います.
なにをとって支障とするかは知りませんが,ブラウザの実装上何も見栄えに変化はありません.

とくめいX 2000/02/10(木) 00:17:07
Framesetはここが参考になるかも。
http://www.ne.jp/asahi/minazuki/bakera/html/reference/frameset

2000/02/10(木) 00:52:04
> その中身は、HTML4.0 Transitional の BODY そのものです。
> NOFRAMES の中に文書本体を丸ごと書くことができるのです。

これあってると思うんだけど,なんでBODYそのものの中にBODY書くのかねぇ?
どうなんでしょう?ちょっと気になってきました.

HTML4.0の仕様書: http://www.w3.org/TR/REC-html40/present/frames.html

2000/02/10(木) 01:39:44
何度もすいません.
以下のページが的を絞って解説してるように思います.
http://hp.vector.co.jp/authors/VA014833/wrong1.html

EMI 2000/02/10(木) 02:42:57
やれやれ‥‥‥
DTDには、こう書いてあります。
 :
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
 :
<!ELEMENT NOFRAMES - - %noframes.content;
 :
(ホントは、もっとごちゃごちゃ書いてあったけど、Framesetに関係あるところだけ抜粋)

これによると、NOFRAMES要素は、直接の子要素としてBODY要素しか取れない(ただし、BODY要素の子孫要素としてNOFRAMES要素を含むことはできない)と読みとることができます。
ただし、BODYはDTDにおいて
<!ELEMENT BODY O O (%flow;)* +(INS|DEL) -- document body -->
と定義されているので、開始タグ終了タグともに省略可能なので、見かけ上BODYタグを書かなくても問題がないだけです。
依然として、NOFRAMES要素の直接の子要素はBODY要素であることだけは変わりません。

http://hp.vector.co.jp/authors/VA014833/wrong1.html
見ました。結構いい加減っぽいです。
そもそも、このページの作者あまり背景色だけ定義して、文字色を定義しないとかまともなスタイルシートを書いてないようなので、個人的に信用できません。
(あと、スタイルシートをLINKで取り込んでいないこととか。スタイルシートの利点、わかってるのか?)

http://www.ne.jp/asahi/minazuki/bakera/html/book/site2
上のサイトの違うページについてだけど、ここも参照のこと。

2000/02/10(木) 02:49:24
そうなんですか.ありがとうございます.

[上に] [前に] [次に]