2個のフレームのページ制御をするには?

[上に] [前に] [次に]
baku [E-Mail] [HomePage] 1999/07/30(金) 23:00:22

2個のフレームのページ制御についての質問です。
文字だけで説明は難しそうで、わかってもらえるか・・

初期状態で、
フレームAとフレームBがあり、おのおのページが表示しています。

この状態で、フレームBのリンク先をクリックするとフレームA
のページも変わり、フレームBのページも変わるようにしたいのです。

フレームBは表形式のdataで、スクロールするため
各フイールドの冒頭の説明をフレームAでしたいのです。
どなたか教えてください。m(__)m

Nobu3 1999/07/30(金) 23:58:55
http://www.tohoho-web.com/wwwqa1.htm#TwoFrames
JavaScriptを使ってもいいなら↑がそのものズバリでしょう。
使わないとなると・・・どうでしょう?できるのかな?

せっかく「Q&A集」があるんだから、書く前に見てみましょう。

baku [E-Mail] 1999/07/31(土) 09:47:11
Nobu3さん。有難う御座いました。
私の拙い表現で、真意が十分伝わっていないような気が・・

frame1〜frame3の関係が今一ピントこないのです。
で、やっぱり実物を・・
http://www.bekkoame.ne.jp/~t_kuwa/test/frame_page.htm
これで再度ご教授願えればありがたいのですが。

たこすけ 1999/07/31(土) 10:41:46
1.HTMLの場合
面倒でも新たにフレーム構成ページ(frame_page2.htm)を作成して
<A HREF="frame_page2.htm" TARGET="_top">data</A>
とする。

2.JavaScriptの場合
> http://www.tohoho-web.com/wwwqa1.htm#TwoFrames
やっぱりコレですね。
3分割された内の2つを同時に書き換えたい時のサンプルです。
frame1〜frame3はフレーム名。
> <frame name="top" src="bunne.htm">
> <frame name="bottom" src="data.htm">
とされているので「top」と「bottom」がそれぞれフレーム名になりますが
「top」はWindowオブジェクトのプロパティなので、違う名前にして下さい。

参考↓
http://www.tohoho-web.com/js/window.htm#Window

3.合わせ技
<A HREF="data2.htm" onClick="top[0].location='bunner2.htm'">data</A>
とする。
ちなみにonClick=""の「top」はフレーム名ではなく、プロパティです。

baku [E-Mail] 1999/07/31(土) 16:04:41

今根本的に勉強不足を痛感しているのです。frameの位置と
それを記述しているfileとの関係が掴みきれていないので
皆さんのアドバイスの記述をどのfileに書けばいいか悩
んでいます。#情けない(^^;;;

それで、ここらをはっきりさせて、もう一度質問させて下さい。
二分割したframeを作る為には、fileが三つ必要です。
frame1(frame1.html)・・frame構成を定義したfile(画面では見えない)
frame2(frame2.html)・・二分割したframeの上側のページ
frame3(frame3.html)・・二分割したframeの下側のページ

それでframe3.hmlにリンクを張り、例→(change_all)これを
クリックすれば二分割したframeの構造はそのままで
frame3.html→frame5.htmlとframe2.html→frame4.html
と変化する仕組みを作るたいのです。

JavaScriptで出来そうでが、悲しいかな
=======================================
<SCRIPT LANGUAGE="JavaScript">
       <!--
       function jump() {
         window.parent.frame2.location="xxxx.html";
         window.parent.frame3.location="yyyy.html";
       }
       // -->
       </SCRIPT>
       <A HREF="dummy.html" onClick="jump(); return false;">XXX</A>
====================================================================
これを何処に記述すればいいか、判らないのです(泣)

もう一度どのfileに記述するのかレクチャしていただければ・・

「史上最大のあつかましいお願い」
実際に自分のwebで動かして、そのfileをいただければ・・

Tmb 1999/07/31(土) 21:17:45
>実際に自分のwebで動かして、そのfileをいただければ・・

ま,そういわんと,もう一歩ですから(^^)

上のスクリプトについてはframe2かframe3の,実際にそのリンクを
使うところにおいてください。もし両方で使いたいなら,両方ともに
書く必要があります。
それからlocation="xxx.html"ではなく,location.href="xxx.html"の
方がよいと。

Nobu3 1999/08/01(日) 00:31:47
ウィンドウ、フレーム関係レクチャー!

今の場合、「frame1」は「frame2」と「frame3」の「parent」になります。
つまり「parent.frame2」というのは「frame2」か「frame3」から見た「frame2」の位置です。
ウィンドウやフレームもオブジェクトなので、あまり難しく考えることはありません。

baku [E-Mail] 1999/08/03(火) 06:43:41
Tmbさん、Nobu3さんどうも

>今の場合、「frame1」は「frame2」と「frame3」の「parent」になります。
>つまり「parent.frame2」というのは「frame2」か「frame3」から見た「frame2」の位置です。
>ウィンドウやフレームもオブジェクトなので、あまり難しく考えることはありません。

難しく考えたく無いのですが・・切実に知りたい事!!
==============================
分割したframeを作る為には、fileが三つ必要です。
frame1(frame1.html)・・frame構成を定義したfile(画面では見えない)
frame2(frame2.html)・・二分割したframeの上側のページ
frame3(frame3.html)・・二分割したframeの下側のページ

それでframe3.hmlにリンクを張り、例→(change_all)これを
クリックすれば二分割したframeの構造はそのままで
frame3.html→frame5.htmlとframe2.html→frame4.html
と変化する仕組みを作るたいのです。

と「fileの定義をしました」
==============================
で、
<SCRIPT LANGUAGE="JavaScript">
       <!--
       function jump() {
         window.parent.frame2.location="xxxx.html";
         window.parent.frame3.location="yyyy.html";
       }
       // -->
       </SCRIPT>
       <A HREF="dummy.html" onClick="jump(); return false;<SCRIPT LANGUAGE="JavaScript">
       <!--
       function jump() {
         window.parent.frame2.location="xxxx.html";
         window.parent.frame3.location="yyyy.html";
       }
       // -->
       </SCRIPT>
       <A HREF="dummy.html" onClick="jump(); return false;">XXX</A>

上記の記述するのはどの「file」にすればいいのですか?

これが知りたいのです!!

Tmb 1999/08/03(火) 10:10:28
ああ,そうか。FRAMEの名前とファイル名がごっちゃになってるから判らないのですね。
bakuさんの書いた部分を訂正してみます。
==========
分割したフレームを作るためには,ファイルが「1つ」必要です。
frame1.html
これでフレームの構成を定義します。フレームはあくまで「分割された画面」です。
#JavaScriptでいうwindowと同じクラスのオブジェクトです。
この1つのファイルだけで,フレームそのものは出来上がります。実は別に「3つ」
なくてもいい。ただ,フレームを作っただけでは空白のページが表示されるだけの
話ですから,それぞれのフレームに読み込むページを設定する必要があります。

ここで上下2つのフレームを作り,それぞれにフレーム名(name属性)を付け,
それぞれに呼び出すページ(src属性)を設定します。これが<FRAME>の意味。

上記ソースから見ると,
<FRAME name="frame2" src="frame2.html">
<FRAME name="frame3" src="frame3.html">
ということになるんですが,ここがちょっと紛らわしいのでしょう。

ソース中に出てくるframe2とかframe3とかは,このnameであって,
srcとはまったく関係ありません(重要)

まぁとにかくframe1.htmlというフレーム定義のファイルの内容は以上です。

frame2.html〜frame5.html,つまり生成したフレームに呼び出すファイルは
通常のHTMLと何ら変わりはありません。それぞれのフレーム(frame2,frame3)
は独立したウインドウとして扱われますから,それぞれで<A href>を使った場合な
ど,もう片方のフレームに影響を与えることなくそのフレームのみが変わります。

もう片方のフレームを変えるためには,そのフレームを定義している「親」を介して
参照する必要があり,それがparent.frame2ないしparent.frame3になります。
そのフレームに表示されているページを変えるためには
parent.frame2.location.hrefを指定すれば可能なわけです。これが上記スクリプト
の内容にあたります。

ところで先にも述べましたが,フレームは「独立したウインドウ」と同じですから,
そのフレーム内にあるボタンを押したときに実行させるスクリプトもまた,同じフレ
ームにあるものしか使えません。また「フレーム」は枠組そのものにすぎませんから,
実際にはそのフレームに表示されているページ(ファイル)の中に,上記スクリプト
が必要になります。

とこやん 1999/08/03(火) 11:25:25
bakuさん、皆さんこんにちわ。

=======================================
<SCRIPT LANGUAGE="JavaScript">
  <!--
  function jump() {
    window.parent.frame2.location="frame4.html";
    window.parent.frame3.location="frame5.html";
  }
  // -->
  </SCRIPT>
  <A HREF="dummy.html" onClick="jump(); return false;">XXX</A>
====================================================================
>これを何処に記述すればいいか、判らないのです(泣)

どこでも良いんじゃないでしょうか?
例えばframe2.htmlにおいてみる。んでリンクを押してみる。
そしたら何か分かりますよ。きっとね!

bakuさん、泣かないで頑張れぇ!
でも確かにフレームって、頭こんがらがっちゃうよねぇ。。。

追加君 1999/08/03(火) 13:14:26
フレームAーBのような関係が沢山出てこないのであれば、JavaScriptは使わなくってもいいのでは?
というより、みんなにあまりJavaScript使用のページを作って欲しくないという自己中心的な発言です。切ってるの。すみません。

たこすけ 1999/08/03(火) 22:37:18
ちょっと本題から逸れますが・・・
> そのフレーム内にあるボタンを押したときに実行させるスクリプトもまた,同じフレ
> ームにあるものしか使えません。
onClick="parent.func()" とか onClick="parent.framename.func()"
あるいは<A HREF="JavaScript:func()" TARGET="targetname">
と記述することで、「親」「兄弟」「他人」が定義した関数を使う事が出来ます。

> ...location="xxx.html"ではなく,location.href="xxx.html"の
> 方がよいと。
あい、以後気を付けます。


で、本題
>  <SCRIPT LANGUAGE="JavaScript">
>  <!--
>  function jump() {
>    window.parent.frame2.location="xxxx.html";
>    window.parent.frame3.location="yyyy.html";
>  }
>  // -->
>  </SCRIPT>
この部分でフレームを2つ同時に書き換える関数を定義しているみたいだ。
>  <A HREF="dummy.html" onClick="jump(); return false;">XXX</A>
これでその関数を呼び出しているらしい。

てことは、「XXX」というリンクを張られた文字をクリックすると
「frame2」という名前の付いたフレームに表示されるファイルは「xxxx.html」
「frame3」という名前の付いたフレームに表示されるファイルは「yyyy.html」
となるはず。
# ちょっと乱暴な解釈だけど(^^;

そしてbakuさんは
> それでframe3.htmlにリンクを張り、例→(change_all)これを
> クリックすれば二分割したframeの構造はそのままで
> frame3.html→frame5.htmlとframe2.html→frame4.html
> と変化する仕組みを作るたいのです。
と書かれている。

ということは・・・・・

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