少し複雑なので文章で説明できるといいのですが・・・

まずTOPページがあります。
次にフレームで上下に分割したメニューページ「A」があります。

「A」の上部分はメニュー項目なので固定です。
下部分は「B」「C」と色々変わっていきます。

通常「A」→「B」にリンクする時は、ターゲットで指定してあげると
ちゃんとフレームの上部分も付いてきますよね?

問題は、TOPページ→「B」にリンクしたときは、当然ながら上部分のフレームは外れてしまいます。
この場合の解決策は、すべての「B」「C」にフレームを付けるというので解決できますが、これが膨大な量なのです。

この場合、JAVAスクリプトでもなんでもかまいませんが、上部分のフレームを引っ張りこめる方法を教えて下さい。

A 回答 (4件)

はい(⌒ ⌒)No.1のものです。


追加質問を頂きましたので・・・

例えば、上のフレームでは、メニューとして、いくつかのリンクがあり、それをどのページにも出したいので、フレームにして、固定しているんですよね?
「旅行」「遊び」「食事」の3つのリンクがあるとします。
すべてのHTMLファイルの<head>と</head>の間に次のように書きます。
<script language="javascript" src="header.js"></script>

そして、「header.js」は次のようにします。
<!--
document.write(<table border=0 width=100% bgcolor=silver>);}
document.write(<tr>);}
document.write(<td>);}

document.write(<table border=0>);}
document.write(<tr>);}
document.write(<td><a href="ryokou.html">|旅行|</a></td>);}
document.write(<td><a href="asobi.html">遊び|</a></td>);}
document.write(<td><a href="syokuji.html">食事|</a></td>);}
document.write(</tr>);}
document.write(</table>);}

document.write(</td>);}
document.write(</tr>);}
document.write(</table>);}
// -->

これで、すべてのHTMLファイルには同じヘッダーが入ります。
メニューが増えたり、変更になった時は「header.js」だけを変えれば、すべてのHTMLファイルのヘッダーが同時に変わります。
これは基本形なので、あとは、ロゴやサイト名を追加するなどの工夫をしてください。
これでいいでしょうか?

この回答への補足

ありがとうございます。
しかし、上記の方法はスマートではないですね w
一つ一つをタグを挿入しないといけいない。

色々と勉強した結果
下記のスクリプトで動くことがわかりました。

トップページを、「100%,*」のフレームにします。そしてこのトップページに、フレームを生成するJavaScriptの関数を書いておきます。

---- index.html (抜粋)
<SCRIPT language="JavaScript">
function openFrame( url ) {
with ( frames['top_main'] ) {
document.open();
document.write( '<FRAMESET rows="100,*"><FRAME src="メニューのURL"><FRAME name="main" src="' + url + '"></FRAMESET>' );
document.close();
}
}
</SCRIPT>

<FRAMESET cols="100%,*">
<FRAME src="トップページのURL" name="top_main">
<FRAME src="test1.html">
</FRAMESET>
---- ここまで

そしてトップページ(仮にtoppage.htmlとしておきます)には、

---- toppage.html (抜粋)
<A href="javascript:parent.openFrame( 'ページ1のURL' );">ページ1へ</A>
---- ここまで

また新しいウィンドウで開きたかったので
下記のようになりました


<SCRIPT language="JavaScript">
function openFrame( url ) {
var swin = window.open( '', 'subWin' );
swin.focus();
with ( swin ) {
document.open();
document.write( '<FRAMESET rows="100,*"><FRAME src="メニューのURL"><FRAME name="main" src="' + url + '"></FRAMESET>' );
document.close();
}
}
</SCRIPT>

<A href="javascript:openFrame( '1ページ目のURL' )">1ページ目へ</A>


ネスケでは確認していませんが、IEでは無事に動いてくれます。
アドバイスを頂いた皆様に感謝します

補足日時:2002/03/06 14:00
    • good
    • 0

JavaScriptの参考URLです。



参考URL:http://www2s.biglobe.ne.jp/~club_tom/
    • good
    • 0

 質問の意味がいまいち把握しきれていないのですが、


 TOPページから「A」のようなフレーム用のページ「Z」へリンクさせて、「Z」の中にあるフレームへ「B」や「C」を読み込むという風ではだめなんでしょうか?
 
 フレームは多重にかけることも可能ですから間に一つフレーム用のページをはさんでみてはいかがでしょうか?
    • good
    • 0

フレームにする場合は、例えば、上下2つに分けるのであれば、全体構成を決めるファイル(index.htmlとします)、上の部分(index1.htmlとします)、下の部分(index2.html)の3つのファイルで構成します。


しかし、そのindex.htmlを呼ばずに、index1.htmlまたはindex2.htmlだけを使えば、フレームにならないのは当然ですね。
ですから、最近の流行としてはフレームを作らずに、ヘッダーとしてあつかうのが流行っています。
つまり、index2.htmlに相当するファイルだけにして、その中にindex1.htmlの部分も書いてしまいます。
そして、そのindex1.htmlに相当する部分をJavaScriptで外出しファイルにしておくのが一般的なやりかたです。

この回答への補足

大変、興味深いアドバイスです。
もっと詳しく教えていただけるとありがたいです。

特にJavaスクリプトについては、ソースや参考URLを教えて頂けるとうれしいです。

補足日時:2002/03/05 15:53
    • good
    • 0

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


人気Q&Aランキング

おすすめ情報