- 締切済み
1度に複数フレームの表示が戻らない
フレームを上(name=index、メニューボタンを表示)に1つ、下の左側(name=sub_menu、サブメニューを表示)と、右側(name=honbun、本文を表示)に分けています。メニューボタンAを押すと、Aサブメニュー、A本文をリンク表示し、メニューボタンBを押すと、Bサブメニュー、B本文を表示するようにしました。が、そこからIEツールバーの「戻る」を押すとAサブメニューに戻ってB本文は残ったまま、もう1度「戻る」を押すとA本文も戻ってくれます。どうしたら1度にAサブメニュー、A本文に戻るのでしょうか?簡単な方法はありますか? <SCRIPT LANGUAGE="JavaScript"> function change_01(){ parent.honbun.location="honbun/A.html"; } function change_02(){ parent.honbun.location="honbun/B.html"; } ・ ・ </SCRIPT> <a href="sub_menu/sub_menu_A.html" target="sub_menu" onClick="change_01()"></a> <a href="sub_menu/sub_menu_B.html" target="sub_menu" onClick="change_02()"></a> ・ ・
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- leaz024
- ベストアンサー率75% (398/526)
JavaScriptをちょっと工夫すればできますよ。 参考URLのページに解説があるので、詳細はそちらをご覧ください。 少し簡略化したサンプルを書きますので、コピー&ペーストして動作を確認してみて下さい。 # frame.html (サブメニューは location.replace を使って入れ替える) <HTML><HEAD><TITLE>フレーム連動サンプル</TITLE> <SCRIPT language="javascript"><!-- var loadedUrl; function loadSubMenu(url) { if (loadedUrl != url) { sub_menu.location.replace(url); loadedUrl = url; } } //--></SCRIPT> </HEAD> <FRAMESET rows="200,*"> <FRAME src="menu.html" name="index"> <FRAMESET cols="200,*"> <FRAME src="submenu_A.html" name="sub_menu"> <FRAME src="honbun_A.html" name="honbun"> </FRAMESET> </FRAMESET> </HTML> # menu.html (リンクするのは本文だけ) <HTML> <HEAD><BASE target="honbun"></HEAD> <BODY> <A href="honbun_A.html">Page A</A><BR> <A href="honbun_B.html">Page B</A><BR> </BODY> </HTML> # honbun_A.html(onLoadでサブメニューAをロード) <HTML><HEAD> <SCRIPT language="javascript"><!-- function loadSubMenu(url) { if (parent.sub_menu) parent.loadSubMenu(url); } //--></SCRIPT> </HEAD> <BODY onLoad="loadSubMenu('submenu_A.html')"> 本文A-1 <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <A name="2">本文A-2</A> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <A name="3">本文A-3</A> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> </BODY> </HTML> # submenu_A.html <HTML><HEAD><BASE target="honbun"></HEAD> <BODY> サブメニューA<BR> <A href="honbun_A.html">A-1</A><BR> <A href="honbun_A.html#2">A-2</A><BR> <A href="honbun_A.html#3">A-3</A><BR> </BODY> </HTML> # honbun_B.html(onLoadでサブメニューBをロード) <HTML><HEAD> <SCRIPT language="javascript"><!-- function loadSubMenu(url) { if (parent.sub_menu) parent.loadSubMenu(url); } //--></SCRIPT> </HEAD> <BODY onLoad="loadSubMenu('submenu_B.html')"> 本文B-1 <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <A name="2">本文B-2</A> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> <A name="3">本文B-3</A> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR> </BODY> </HTML> # submenu_B.html <HTML><HEAD><BASE target="honbun"></HEAD> <BODY> サブメニューB<BR> <A href="honbun_B.html">B-1</A><BR> <A href="honbun_B.html#2">B-2</A><BR> <A href="honbun_B.html#3">B-3</A><BR> </BODY> </HTML>
- 0011Allen
- ベストアンサー率56% (108/192)
私も以前、同じ事を悩んだ事があって・・ メニューボタンがフレームセットにリンクするようにしたことがありました。 メニューで <A HREF="AFramset.html" Target="_top">MenuA</A> <A HREF="BFramset.html" Target="_top">MenuB</A> として AFramset.htmのなかに (COLSとROWS---省略) <Frame Name="index" src="Menu.html"> <Frame Name="sub_menu" src="Asub.html"> <Frame Name="honbun" src="Ahonbun.html"> BFramset.htmのなかに (COLSとROWS---省略) <Frame Name="index" src="Menu.html"> <Frame Name="sub_menu" src="Bsub.html"> <Frame Name="honbun" src="Bhonbun.html"> これって変かな?
お礼
この方法も考えていましたが、初期状態ではA本文にA-1本文を表示し、Aサブメニューで選択リンクしたA-3本文表示後に、メニューBボタンを押してB本文表示をして「戻る」を押すとA-3ではなくA-1本文が表示されてしまうのでダメだと思いました。やり方もう少し考えてみます。ありがとうございました。
- nipotan
- ベストアンサー率59% (134/227)
一つのリンクで - アンカータグでメニュー部分を変更 - 次に JavaScript で本文部分を変更 という二つのアクションが発生しているので、戻るボタン一回で同時に戻る (2 アクション分戻す) 事は不可能です。 こういった場合、一般的に 1. A メニューと A 本文をフレーム内部に埋め込んだ <frameset> が書かれている HTML 2. B メニューと B 本文をフレーム内部に埋め込んだ <frameset> が書かれている HTML の二つを用意して、A を押したら 1 を _top に、B を押したら 2 を _top にリンクさせる方法を取らないと不可能です。
補足
回答ありがとうございます。やってみます。ちなみに、このような動作のまま、ホームページを公開されているところがあるのですが、許される範囲の動作だと思われますか?
お礼
ありがとうございました。焦っていたので、結局、1段階として上下だけのフレームをつくり、下のフレームには、別に左右のフレームのみのHTMLをメインメニューとサブメニューの項目分作ってしまいました。JavaScriptも使わないことになってしまいました。間違いなくサブメニューと本文が同時に戻ります。少し落ち着いたらこのやり方で更新してみようと思います。お礼が大変遅くなって申し訳ありませんでした。