• ベストアンサー

フレーム内固有の場所へのリンク

フレーム分割のない普通の画面からのリンクで、 あるフレーム(2つあるフレームの片一方とか)の ある場所を表示させたいと考えて いるのですが、その場所の指定の仕方がわかりません。 普通にアンカーをつけるのならわかるのですが・・・。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • puri2
  • ベストアンサー率75% (3/4)
回答No.3

HTMLのみで作るのなら、初期ページ違いのフレームセットを アンカーの数だけ作る以外の方法は思いつきませんが、 JavaScriptを使えば可能です。 まずHTMLファイルを4つ(a~d)用意してください。 a.html、b.htmlにはそれぞれ下記のソースをコピペしてください。 --------------- a.html --------------- <HTML> <HEAD><TITLE>フレームなしページ</TITLE> <SCRIPT language="JavaScript"> <!-- sendURL = "b.html"; function sendData(anc){ sData = escape(anc); location.href = sendURL + "?"+sData; } //--> </SCRIPT> </HEAD> <BODY bgcolor="#FFFFFF" text="#000000"> <P><A href="#" onClick="sendData('#1')">アンカー1</A> <P><A href="#" onClick="sendData('#2')">アンカー2</A> </BODY> </HTML> --------------- b.html --------------- <HTML> <HEAD><TITLE>フレームセット</TITLE> <SCRIPT language="JavaScript"> <!-- rData = unescape(location.search).substr(1,9999); rightfrm = "d.html" + rData; document.write('<FRAMESET cols="20%,*" frameborder="YES" border="2" framespacing="2" rows="*"><FRAME name="leftFrame" scrolling="NO" noresize src="c.html">'); document.write('<FRAME name="mainFrame" src="' + rightfrm + '"></FRAMESET>'); //--> </SCRIPT> </HEAD> </HTML> フレーム無しのページa.htmlからフレームセットb.htmlにリンクします。、 フレームセットの右側(d.html)のアンカー1、2へそれぞれジャンプできたと思うのですが、どうでしょう? 確認した限りでは、Windows 上では問題なく動作します。 Mac の場合、ネスケでは動作が安定しませんでしたが、これは私の記述が未熟なせいでしょう。

その他の回答 (3)

  • puri2
  • ベストアンサー率75% (3/4)
回答No.4

すみません。下の回答の補足です。 a.htmlのリンクの部分に「;return false」を書き足したらMacのネスケでも大丈夫でした。(確認した限りでは、ですけど。) ↓こうなります。 <A href="#" onClick="sendData('#1');return false">アンカー1</A> 後、c.htmlとd.htmlはフレームセットb.htmlの中に表示されるファイルですから、c.htmlをメニューのページ、d.htmlをメインのアンカーを含んだページだと考えてください。 説明不足でした。

lofty
質問者

お礼

ありがとうございました。 JAVAは使ったことがないのですが、がんばってみます。 時間がなくて、ここまでとさせていただきますが、 どうやら、おかげさまで、できそうです。

  • makimaki7
  • ベストアンサー率38% (7/18)
回答No.2

つまり、フレームではない普通のページから、 フレームのページに飛び、尚且つそのフレームのなかのページが 一番上の部分から表示されるのではなくて、 ある一部分(例えばページの真中あたりとか)が表示されるようにしたいのでしょうか? その場合はフレームを定義しているHTMLファイルのところに書き込む URLを以下のようにしてみて下さい。 <FRAME SRC="http://aaa.bbb.ccc/xxx.html#efg" NAME="ddd"> ↓ ↓                    ↑ファイルの拡張子の後に#***のよ ↓                     うに半角英数字で名前を付けて下 ↓                     さい ↓ <A NAME="egf">←ページの最初に表示させたい部分のすぐ前につける(終止タグ不要) 本来アンカータグ同士で使うんですが・・・ フレームタグとアンカータグの組み合わせでも、 なぜかうまくいきます(苦笑) 動作確認環境 Win98&IE5.5 win95&NC4.75

lofty
質問者

補足

ありがとうございます。 質問の意味はmakimaki7さんのおっしゃる通りです。私の説明が足らずにすみません。 しかし、この場合だと、そのフレームを開くときは必ず、その"efg"の所にいきますよね。 実は、A(フレームなし)という画面のメニューからB(2つのフレームC、D)に飛び、C画面にはAと同じメニューを(違うページを用意しますが、)D画面にはその内容を表示したいのです。 なので、A画面から、D画面に複数のアンカーをつけて、その内容に飛ばし、かつ、C画面にメニューを引き続き表示していたいのです。あー、上手く説明できません!がんばってみてはいるのですが。 ・・・すみません。

  • kohma
  • ベストアンサー率50% (3/6)
回答No.1

「あるフレームのある場所」という表現がよくわからないのですが・・・ どこかに、仮にページをアップしていただいて、 「こっちからこっちにリンクさせたい」みたいにしていただければ 回答できるかもしれません。 あるいは、実際にフレームを使っている(できれば個人じゃない) ページを指定していただいても結構ですが。

lofty
質問者

お礼

社外秘のHPを制作してまして、個人ではHPを作ったことがなく、アップできる環境にないので・・・すみません。

関連するQ&A

専門家に質問してみよう