• 締切済み

フレーム上部分を引っ張り込むリンク方法

少し複雑なので文章で説明できるといいのですが・・・ まずTOPページがあります。 次にフレームで上下に分割したメニューページ「A」があります。 「A」の上部分はメニュー項目なので固定です。 下部分は「B」「C」と色々変わっていきます。 通常「A」→「B」にリンクする時は、ターゲットで指定してあげると ちゃんとフレームの上部分も付いてきますよね? 問題は、TOPページ→「B」にリンクしたときは、当然ながら上部分のフレームは外れてしまいます。 この場合の解決策は、すべての「B」「C」にフレームを付けるというので解決できますが、これが膨大な量なのです。 この場合、JAVAスクリプトでもなんでもかまいませんが、上部分のフレームを引っ張りこめる方法を教えて下さい。

みんなの回答

  • Spur
  • ベストアンサー率25% (453/1783)
回答No.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ファイルのヘッダーが同時に変わります。 これは基本形なので、あとは、ロゴやサイト名を追加するなどの工夫をしてください。 これでいいでしょうか?

kosa
質問者

補足

ありがとうございます。 しかし、上記の方法はスマートではないですね 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では無事に動いてくれます。 アドバイスを頂いた皆様に感謝します

noname#4326
noname#4326
回答No.3

JavaScriptの参考URLです。

参考URL:
http://www2s.biglobe.ne.jp/~club_tom/
  • chupark
  • ベストアンサー率41% (90/218)
回答No.2

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

  • Spur
  • ベストアンサー率25% (453/1783)
回答No.1

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

kosa
質問者

補足

大変、興味深いアドバイスです。 もっと詳しく教えていただけるとありがたいです。 特にJavaスクリプトについては、ソースや参考URLを教えて頂けるとうれしいです。