• ベストアンサー

フレームページの操作

フレームページの操作について質問をさせて下さい。 index.htmlというページから、 左右に2分割されたフレームページ frame.html というページへリンクを貼るときに、 frame.html であらかじめ表示されるように定義された 2つの left.html、right.html というページ以外に、 あらかじめ index.html から frame.html に向けて、 left2.html、right2.html が表示されるような リンク設定は可能でしょうか。 やはり left2.html と right2.html 用に新しく frame2.html というフレームページを、 定義しないとダメでしょうか。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.2

cookieを利用しても良いのであれば、index.htmlからcookieに次のフレームページで開きたいファイルのURLを送っておき、frame.htmlの側でそのcookieからそのURLを取り出してフレーム内に表示するページを流動的に変更させることが可能だと思います。 この場合、index.htmlのhead内に以下のソースを追加します。 <script type="text/javascript"><!-- function frameOpen(urlA,urlB){ urlData0=urlA+"<>"+urlB; urlData0=escape(urlData0); urlData="SetURL="+urlData0; document.cookie=urlData; location.href="frame.html"; } //--></script> 上のソースで、frameOpen()という関数を定義しています。 リンクは、以下のようなかたちで、関数を呼び出します。 <a href="javascript: frameOpen('left.html','right.html');">リンク</a> <a href="#" onClick="frameOpen('left2.html','right2.html'); return false;">リンク</a> ちょっと解説すると、「frameOpen('左フレームのページのURL','右フレームのページのURL')」という形で関数を呼び出し、同時に関数に二つの引数(表示させるページのURL)を渡します。 関数の側では、受け取った引数を変数に格納し、これらのデータをSetURLというキーで定義しつつcookieに書き込み、その後frame.htmlを呼び出します。 次に、frame.htmlですが、head内に以下のソースを追加してください。 <script type="text/javascript"> <!-- function URLchange(){ getc=document.cookie+";"; x1=getc.indexOf("SetURL"); if (x1!=-1) { tem1=getc.substring(x1-1); x2=tem1.indexOf("="); x3=tem1.indexOf(";"); urlData0=tem1.substring(x2+1,x3); urlData=unescape(urlData0); frmlct=urlData.split("<>"); frames[0].location.replace(frmlct[0]); frames[1].location.replace(frmlct[1]);} } window.onload=URLchange; //--> </script> こうすると、このファイルのロードが完了したときに、cookieからデータを取り出し、それぞれのフレームのlocationを取り出したデータに置き換えることで、cookieに渡されていたURLをそれぞれのフレーム内に表示させます。 それぞれのフレームの表示内容を指定しているのは「frames[x].location.replace()」となっている部分です。 frames[x]はフレームを保持している配列で、これを利用することでフレームの表示内容を操作しています。 なお、各フレームに対してframe要素内でname属性を指定している場合は、「frames["フレーム名"].location.replace()」という形に置き換えても、同様の動作が確保できると思います。 そちらのほうが判りやすければ、ソースを書き直しても良いでしょう。 上記はつい先ほど、似た内容の質問に私が寄せた回答を流用して改造したソースですが、参考になれば。 なお、cookieの利用が好ましくない場合は、index.htmlから新ウィンドウを開いてそちらでフレームページを展開する#1の方の提示されている方法か、強引ですがindex.htmlから子ウィンドウを開いてそこにデータを書き込み、次のページでその子ウィンドウからデータを取り込んで表示内容を調整するという方法もあると思います。 しかし、JavaScriptが有効でない環境では、いずれの方法でもナビゲーションができないので、そういう意味で少々閲覧者の間口を狭めてしまう可能性は残るかもしれません。 参考になれば幸いです。

bgcolor_blue
質問者

お礼

lead1976様、 動作確認しました。完璧です。 クッキーを利用する方法があるとは存じませんでした。 ファイルをロードした後に、 クッキーからデータを読み込むタイムラグがほんの一瞬ありますが、 表示には全く問題ありませんでした。 早速使わせて頂きます。 ご回答頂き、誠にありがとうございました。

その他の回答 (1)

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

別ウィンドウで開いてもいいのであれば、一応それらしい事はできます。 IE6.0で試しました。もしかしたら、もっと良い方法があるかもしれません。 frame.html---------------------------------------------------------- <frameset cols="50%,50%">   <frame src="left.html" name="left_frame">   <frame src="right.html" name="right_frame"> </frameset> index.html----------------------------------------------------------- <!--スクリプト--> <script language="JavaScript"><!-- function FramePage(left_page, right_page) {   window.open("frame.html", "_blank");   window.open(left_page, "left_frame");   window.open(right_page, "right_frame"); } //--></script> <!--リンク部分--> <a href="javascript:FramePage('left2.html', 'right2.html')">リンク</a>

bgcolor_blue
質問者

お礼

gimmick様、 こちらも動作を確認いたしました。 今回、別窓表示は考えておりませんでしたが、 いずれ別窓表示させたい時のために必要ですので、 是非、参考にさせて頂きます。 ご回答頂き、誠にありがとうございました。

関連するQ&A

  • フレームなしのページからフレームありのページ(ラベルが貼ってある部分)に飛びたい

    自作index.html(フレームなし)から、自作してないフレームありのページへ位置を指定して飛びたいのですが、方法はありますか?(通常のリンクではなく、ページ内リンクでページが表示される位置を指定したい) 自作↓ index.html(フレーム無し) フレームありのサイト↓(自作ではない) flame.html(左右分割) 左left.html、右right.html(Name="MAIN") リンクしたいページ(上記サイトの1ページ) right2.html#right2 単純にリンクを貼る場合は、right2.html#right2でいいと思いますが、そうするとright2.htmlしか表示されません。 そうではなく、left.htmlとright2.html#right2を表示させたいのです。 どなかご回答のほど、宜しくお願いします。

  • リンク先をフレーム(+フレーム内の1つを別々のページへ)

    タイトル通りなんですが、 あらかじめ、frame.htmlという 上と左右に分割されたページ (上はtop.html、左はleft.html、右はright.html) があるとします。 で、index.htmlから1~3までのリンク先があり、 そこをクリックすると、frame.htmlの top.htmlとleft.htmlだけ同じファイルを呼び出し、 right.htmlの部分だけ各1~3のページを 読み出す事はできるのでしょうか? 1~3.html用にそのフレームページを3つ作れば早いのですが どうにかして、frame.htmlの「right」だけを各リンク先のページに 切り替えるという、1つのファイルで賄いたいと思っております。 宜しくお願い致します。

  • フレームを入れ子式にする方法

    フレームを使ってホームページを作りたいのですが表示がうまく出来ません。 ホームページビルダー7で作成していますがある程度のタグは読めます。 frame1.htmlを上下に二分割し、フレーム名topとunderを作成  ↓ frame2.htmlを左右に二分割し、フレーム名leftとrightを作成  ↓ topからリンク先をunderにtarget指定してframe2.htmlを表示  ↓ 画面がtop,left,rightの三分割になる 以上のようなことをしたいのですが、right部分のページが表示されません。left部分にtargetをrightに指定したリンクを貼っているのですがクリックすると別窓で開いてしまいます。 フレームの中にフレームを開くことは出来ないのでしょうか?それともリンクの方法等が間違っているのでしょうか? それと、もう一点質問です。 top、left、rightの三つに分割された状態から、leftにあるリンクを使ってtop,underの二分割に戻すことは可能でしょうか? リンクの指定に_topもしくは_parentを使うと全画面にunderが表示されてしまいます。

  • HP フレームページを開き、更にページを開きたい

    左右に分割されているフレームがあります。 indexページから <A href="illust.html" target="top">フレーム</a> とリンクさせており、フレームページに飛びます。 左フレームに「A」、「B」、「C」、「D」と…リンクが張ってあり、 「B」をクリックすると、右フレームに「B」ページが表示されます。 <A href="b.html" target="right" >B</a> indexページから、フレームにリンクさせたら、フレームページが開かれますが、 さらに「B」ページを開いた状態にすることは可能でしょうか? 今の状態だと、フレームページが開かれるだけで、手動で左フレームから「B」をクリックするのが手間なのですが…。 ビルダー等のソフトは使用しておらず、メモ帳でタグを書いています。

    • ベストアンサー
    • HTML
  • フレームページの作り方

    こんにちわ。 フレームページを作るために下記のタグでいこうと思うのですが HTMLファイルどうやって作ってどのようにアップさせればいいのか わかりません。それとHTMLファイルは自分のデスクトップに置いてあるファイルを直接この下記タグ<frame src="left.html"> <frame src="right.html">に貼り付けていいのでしょうか? ご回答おねがいします。 <html> <head><title>左右に分割するフレーム</title> </head> <frameset cols="20%,80%"> <frame src="left.html"> <frame src="right.html"> </frameset> </html>

    • ベストアンサー
    • HTML
  • フレームページへのリンクで…

    あるページからフレームを使用したページにリンクを張るときに、 そのフレームページのどれかのフレームに   (仮に一つのframeタグのname属性を"left"にするならばその"left"のフレームに) リンクと同時に、任意のページを読みこませる事は可能ですか? もう少し簡潔に言うと、index.htmlなどから、 複数のリンク先を同じフレームページにして(frame.htmlなら全部frame.htmlに)、 そのリンクによって表示させるフレームの中身を(top.htmlとかmain.htmlとかいろいろなものに) 変えられるかどうかって事です。 どうもうまく表現できなくてすいません。 もしできるのであれば、ぜひ教えてください。

  • フレームページのアップロードについて

    ホームページビルダー8で、フレームページを作った場合 アップロードするとき、フレーム分割したTOPページは、indexにするべきですか? 例えば、左右の分割にした場合、左をindex,右をmenuとして保存して アップロードすればいいでしょうか?

  • フレームページからトップページへのリンク

    こんばんは。 困っている事があるのですが、 左右の2分割のフレームページで、 片方のどちらかにトップページへのリンクを張ったのですが、 それをクリックすると、 片方のページだけに表示されるんですよ。 それを、片方だけではなく、 フレームページを1ページとして トップページに移動する事はできないでしょうか? どなたか、わかる方が居りましたらぜひ教えて下さい。 それでは、お願いします。

    • ベストアンサー
    • HTML
  • ホームページビルダー11のフレームの属性設定

    ホームページビルダー11の質問、 フレームの属性で、ピクセル設定をしているのですが、 ブラウザーの表示サイズをかえると、レイアウトが崩れます。 複数サイトを作成していますが、ある程度は崩れなくできるのですが 全てのフレームに対して、左右方向、上下方向にブラウザーの表示サイズをかえても レイアウトが崩れなくしたいのです。 全て、標準モードです。 色々試したのですが、不明です。 何か、他に設定があるのでしょうか? ◆フレームを2分割した場合 左右に分けて、設定しています。 また、右側のフレームで再設定しょうとすると 「*指定」にしてあるフレームを再度「OK」と 「0から9999までの数値を指定してください。」と表示されます。 意味がわかりません。 「ブラウザでサイズ変更をさせない」「スクロールバー設定」は、 どの設定してもかわりません。 ◆フレームを3分割した場合は、  ●TYPE1 Top Left Right TOPに設定すると、ブラウザーの表示サイズをかえると上下方向に関してはレイアウトが崩れませんが、 左右方向は崩れます。  ●TYPE2 Left Top Left Right Topエリアのみ左右方向に表示サイズをかえるレイアウトが崩れます。 それ以外は、OKです。 宜しくお願いいたします。

  • フレームで分かれたページへのリンク

    フレームで分割されていないページからフレームで分かれているページへリンクしたいのですが、そのときにリンク先によりフレームに表示されるページを指定したいのですがうまくできません・・・どうしたらいいのでしょうか? たとえば TOPページからリンクしていくと左側のフレームへメニューで右側には指定されたリンク先のページが表示するように。なのでクリックされたリンクが変わればそのページも違うページが表示されるようにです。 どうかよろしくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう