プロが教える店舗&オフィスのセキュリティ対策術

フレームを上(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>

A 回答 (3件)

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>

参考URL:http://www.din.or.jp/~hagi3/JavaScript/JSTips/Fr …
    • good
    • 0
この回答へのお礼

ありがとうございました。焦っていたので、結局、1段階として上下だけのフレームをつくり、下のフレームには、別に左右のフレームのみのHTMLをメインメニューとサブメニューの項目分作ってしまいました。JavaScriptも使わないことになってしまいました。間違いなくサブメニューと本文が同時に戻ります。少し落ち着いたらこのやり方で更新してみようと思います。お礼が大変遅くなって申し訳ありませんでした。

お礼日時:2002/10/28 20:16

私も以前、同じ事を悩んだ事があって・・



メニューボタンがフレームセットにリンクするようにしたことがありました。
メニューで
<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">

これって変かな?
    • good
    • 0
この回答へのお礼

この方法も考えていましたが、初期状態ではA本文にA-1本文を表示し、Aサブメニューで選択リンクしたA-3本文表示後に、メニューBボタンを押してB本文表示をして「戻る」を押すとA-3ではなくA-1本文が表示されてしまうのでダメだと思いました。やり方もう少し考えてみます。ありがとうございました。

お礼日時:2002/10/07 13:47

一つのリンクで



- アンカータグでメニュー部分を変更
- 次に JavaScript で本文部分を変更

という二つのアクションが発生しているので、戻るボタン一回で同時に戻る (2 アクション分戻す) 事は不可能です。

こういった場合、一般的に

1. A メニューと A 本文をフレーム内部に埋め込んだ <frameset> が書かれている HTML
2. B メニューと B 本文をフレーム内部に埋め込んだ <frameset> が書かれている HTML

の二つを用意して、A を押したら 1 を _top に、B を押したら 2 を _top にリンクさせる方法を取らないと不可能です。

この回答への補足

回答ありがとうございます。やってみます。ちなみに、このような動作のまま、ホームページを公開されているところがあるのですが、許される範囲の動作だと思われますか?

補足日時:2002/10/07 13:24
    • good
    • 0

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