フレームに表示するページを制御する方法について

このQ&Aのポイント
  • フレームを使用して複数のページを表示している際、TOPページ以外のページを指定のフレームに表示する方法について教えてください。
  • 現在、http://URL/index.htmlには左側のフレームにleft.html、中央のフレームにmain.html、右側のフレームにright.htmlを表示する設定になっていますが、TOPページのみが検索エンジンからHITされ、フレームが付いていないページが表示されることがあります。したがって、HITされたページをmain.htmlに表示するようにするためのJavaScriptの記述方法を教えてください。
  • 他のサイトを参考にして、if (parent==self)という条件でTOPページを呼び出すことはできましたが、その後にparent.main.location.href ='HITしたページ'と記述してもmain.htmlは更新されず、TOPページが再表示されるだけです。HITしたページを指定のフレームで表示するためにはどのようなJavaScriptのコードを記述すればよいでしょうか。
回答を見る
  • ベストアンサー

いつも御世話になっております。

いつも御世話になっております。 現在、http://URL/index.htmlに、 left.html,main.html.right.htmlとフレームを3つに分け それぞれleft,main.rightと名前を付けております。 HP的には、main.htmlのページに様々なページを表示するように設定しているのですが、 検索エンジンからTOPページのindex.htmlがHITするだけでなく、 フレームが付いていないページのみをHITして来る事もあります。 ※本来であればleft,HITページ,rightという3フレームで構成したいのです。 そのため、そのように呼ばれた際には、 index.htmlを再度呼び出して 呼び出されたページをmain.htmlに表示するという対応を行いたいと考えています。 様々なサイトを見ていると if (parent==self)というif文の中に、 location = 'http://URL/index.html'; と記述する事でTOPページは呼び出せているのですが、 その次に例えば parent.main.location.href ='HITしたページ' と記述しても、main.htmlは更新されず TOPページが、ただ呼ばれているだけとなっております。 このようにHITしたページから、TOPページに戻って、 HITしたページを指定フレームでCALLするために JavaScriptで、どのように記述すればよいか御教授頂きたいです。 宜しく御願いします。

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

何かよくわかりませんが、  if (parent==self)  location = 'http://URL/index.html'; を  if (parent==self)   location = 'http://URL/index.html'        + '?url=' + encodeURI(location); として、 indexhtmlの方には、  window.onload=function(){   var q = decodeURI(location.search);   frame["main"].src = q.split("=")[1];  } とするとか。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

location.search がなかった場合(=index.htmlを表示しようとしている場合)はなにもしない、を付け加えておいたほうが良さげ。

関連するQ&A

  • フレームで呼び出したhtml名の取得

    お世話になります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2374524 で、教えて頂いた関数呼び出しについてです。 フレームを左右に分割しています。 左側 frame_left.html    name="left" 右側 最初page1.html    後でページを切り替える name="main" としたとき、 frame_left.htmlで <a href="page2.html" onclick='getTagName();' target="main">ページ2</a> とすると、右側フレームはpage2.htmlに切り替わります。 このとき、getTagName();が、ページが切り替わった後に実行される方法として、 No1.talepandaさんに、 <body onload="window.parent.left.getTagName();"> と、いう方法を教えて頂きました。 ここで、関数getTagName()で、この呼び出したhtml名、つまりpage2.htmlを取得できないものでしょうか。 いろいろと試してみました。 alert("window.parent.mainfrm.location.href="+window.parent.mainfrm.location.href); //framesetを定義したhtml名となってしまう。 alert("window.mainfrm.location.href="+window.mainfrm.location.href); //スクリプト停止 alert("location.href="+location.href); //frame_left.htmlになる。 と、いうことでいずれもダメでした。 このような呼び出し方をした場合、呼び出しもとのhtml名を取得できないのでしょうか。 どうか、よろしくお願いいたします。

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

    フレームを使ってホームページを作りたいのですが表示がうまく出来ません。 ホームページビルダー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が表示されてしまいます。

  • URLの取得について

    localserverでjavaを使っています。 a.html内を二つのフレームに分けて ひとつをaa.html(localserver内) もうひとつをab.html(外部のhttp:www~からはじまるserver)にしています。 aa.htmlでab.htmlのURL表示がうまくいきません。 document.write(parent.location);親フレームのURLの表示 document.write(parent[0].location);aa.htmlのURLの表示はうまくいきます。 ab.htmlをlocalserverのドキュメントにするとうまくいくのですが・・・ どうしたら外部サーバーにあるab.htmlのURLを取得できるでしょうか?

    • ベストアンサー
    • Java
  • JavaScript フレーム内のインラインフレームへのリンク

    こんにちは JavaScriptを使って、セレクトメニューのリストから選択すると、同ページ内にあるインラインフレームにページが展開するようにしたいのですが行き詰ってしまったので質問させてください。 ・問題点 下記のようにJavaScriptの記述をしているのですが ブラウザで開いて見ると、「更新情報6月」などを選択しても、もともと開いているページが表示されたままで別のページが開きません。 ・ファイル構成 index.html(フレームセット)  -menu.html(フレーム名 menu)  -main.html(フレーム名 main)  new.html(indexを開いた時に表示されているページ)  new6.html(更新情報6月をクリックすると開いてほしいページ)  new5.html(更新情報5月をクリックすると開いてほしいページ) main.htmlの中にインラインフレーム(name=myNew) とセレクトメニューがあります。 こちらの過去ログを見たりして記述することが出来たのですが、main.htmlを単体で開いた場合は動作してindex.htmlで開いた場合は動作しないようなのです 「parent.myNew.」がいけないのかなと思うのですが JavaScriptの細かいことが分からないので どうしたら良いのか・・・ parentを消したり、thisにしたりしてみたんですが うまくいきませんでした。 どなたかアドバイスをお願いいたします ----- 記述内 ------------ <select onChange="parent.myNew.location.href=this.options[this.selectedIndex].value"> <option value="" selected></option> <option value=new6.html>更新情報6月</option> <option value=new5.html>更新情報5月</option> </select> <iframe src="new.html" name="myNew" width="250" height="400"></iframe>

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

    自作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を表示させたいのです。 どなかご回答のほど、宜しくお願いします。

  • 別フレームへの必須入力チェック処理を行ないたい

    ページ構成がフレーム仕様になっていて、ヘッダページ部分にある確認ボタンを押すことで、 メインページ(フレーム名:main)部分にある入力項目の複数項目に対する必須入力チェックを行ないたいのですが、うまく処理が実行されません。 if文の条件を、if (parent.main.document.forms[0].elements[0].value == "")のようにすると、 正しく処理されますが、入力項目の数だけ記述しなければならず、さらに入力項目の数は決まっていません。 どなたか解決策をご教授いただけませんでしょうか。 <SCRIPT language="javascript"> <!-- function formchk() { if (parent.main.document.f1.food.value == "") { alert("食べ物 の項目が未入力です"); parent.main.document.f1.food.focus(); return false; } if (parent.main.document.f1.drink.value == "") { alert("飲み物 の項目が未入力です"); parent.main.document.f1.drink.focus(); return false; } } // --> </SCRIPT>

  • フレームページの操作

    フレームページの操作について質問をさせて下さい。 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 というフレームページを、 定義しないとダメでしょうか。

  • URLの取得

    すいません。ご指摘をいただいたのでカテゴリ替えして質問させていただきます。 localserverでjavaを使っています。 a.html内を二つのフレームに分けて ひとつをaa.html(localserver内) もうひとつをab.html(外部のhttp:www~からはじまるserver)にしています。 aa.htmlでab.htmlのURL表示がうまくいきません。 document.write(parent.location);親フレームのURLの表示 document.write(parent[0].location);aa.htmlのURLの表示はうまくいきます。 ab.htmlをlocalserverのドキュメントにするとうまくいくのですが・・・ どうしたら外部サーバーにあるab.htmlのURLを取得できるでしょうか?

  • リンク先をフレーム(+フレーム内の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つのファイルで賄いたいと思っております。 宜しくお願い致します。

  • フレームサイズの変更について

    過去ログを参照していたら、次のようなサンプルを発見したのですが、 IEでは動作しますが、FireFoxではエラーになってしまいます。 どこを修正すれば動くようになるでしょうか? ■frame.html■ <html> <head><title></title> <script language="javascript"> <!-- document.write(frset('40%','60%','a.htm?','1.htm?')) function frset(a,b,f1,f2){ var frset= '<title>frame</title>\n' +'<frameset cols="'+a+','+b+'">\n' +'<frame src="'+f1+'">\n' +'<frame src="'+f2+'">\n' +'</frameset>\n' return frset } //--> </script> </head> </html> ■a.html■ <html> <head><title></title> </head> <body> 右のリンクで<br>フレームのサイズ<br>が変わるよ! </body> </html> ■1.html■ <html> <head><title></title> <script language="javascript"> <!-- function chsize(a,b){ if(location.search==""){ if(document.all){ parent.document.all.tags("frameset")[0].cols=a+","+b }else{ //parent.document.open() parent.document.write(frset(a,b,parent.frames[0].location.href+"?",parent.frames[1].location.href+"?")) parent.document.close() } } } //--> </script> </head> <body onload="chsize('40%','60%')"> こっち側60%です。 <br> <a href="2.htm">こっち側を40%にする!</a> </body> </html> ■2.html■ <html> <head><title></title> <script language="javascript"> <!-- function chsize(a,b){ if(location.search==""){ if(document.all){ parent.document.all.tags("frameset")[0].cols=a+","+b }else{ //parent.document.open() parent.document.write(frset(a,b,parent.frames[0].location.href+"?",parent.frames[1].location.href+"?")) parent.document.close() } } } //--> </script> </head> <body onload="chsize('60%','40%')"> <a href="1.htm">こっち側を60%にする!</a> <br> こっち側40%です。 </body> </html>