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
> と変化する仕組みを作るたいのです。
と書かれている。
ということは・・・・・
[上に]
[前に]
[次に]