• ベストアンサー

親ウィンドウの別フレームを子ウィンドウから操作したい

いろいろ試しているのですが、理解不足のせいでしょうが、どうやってもできません! 内容は以下の通り(分からないのは3)です。どうぞ宜しくお願いいたします。 1:画面を、AとBの2つのフレームに分割しています。 【index.html】 <frameset>  <frame src="A.html" name="A">  <frame src="B.html" name="B"> </frameset> 2:Aフレーム内に記述してあるaaaアンカーをクリックすると、子画面ko.htmlを開きます。 <a href="javascript:void(0)" onclick="window.open('path=ko.html','_blank');">子画面</a> 3:ko.htmlではbbbというアンカーがあって、それをクリックすると、"親画面のBフレームにbbbで指定したリンク内容を表示したい"のです。 <a href="javascript:void(0)" onclick="opener.window.location=('B?path=/home/~/~/ZZZ.html');">開きたいファイルZZZ.html</a> と書くと、openerはAだからAにZZZ.htmlの内容が表示されてしまうので、(全くおかしな記述をしているのかもしれませんが・・・(- -;))あちこち調べながら、 B.opener.window.locationとか、 B.opener.window.location.hrefとか、 parent.B.window.locationとか、 parent.frames[1].window.locationとか、 ほかにもいろいろやってみたのですが、出来ませんでした・・・。 このような別フレームの操作が出来る方法があれば教えてください。 宜しくお願いいたします。

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

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

ご質問の場合、子ウィンドウ(ko.html)からみて、openerはフレームAになっていますから、window.opener~はフレームAに対する操作を意味することになります。 Bフレームを取得するには window.opener.top.document.getElementsByName('B')[0].src='http://www.yahoo.co.jp/'; などのようにしてあげればよいかと… ところで現状で、ko.htmlは開いているのでしょうか? (こちらの環境では、ご質問の通りだと開きません)

mamappi82
質問者

お礼

回答、ありがとうございます。 >window.opener.top.document.getElementsByName('B')[0].src='http://www.yahoo.co.jp/'; この方法で、上手くいきました!! ありがとうございました。 『~document.getElementsByName('B')[0].src~』の部分、 も少し勉強してみます。 <m(_ _)m> ところで、ko.htmlは開いています。 質問では少し、記述を端折りましたが、大体下記の通りです。 <a href="javascript:void(0)" onclick="window.open('/~/~?path=~/~/~/ko.html','_blank','width=400,height=300, menuber=no,toolbar=no,scrollbars=yes,status=yes,resizable=yes');">子画面</a> ありがとうございました!

その他の回答 (2)

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

#1補足 jabascriptはfunctionとしてindex.html に作っておいて、子供からparent.で呼ぶわけです

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

<frame>にid属性を振っておいて、DOMで直接属性操作すれば  <frame src="A.html" name="A" id="A">  <frame src="B.html" name="B" id="B"> document.getElementById("B").src = "ZZZ.html"; 出来なかったかなあ?あるいは frameB = document.getElementById("B"); frameB.setAttribute("src","ZZZ.html");

mamappi82
質問者

お礼

早速の回答、どうもありがとうございました。 やってみたのですが、何故か上手くいきませんでした。 idを使ってみるという方法もあるのですね。 javascriptについてもう少し勉強しようと思います。 ありがとうございました。 <m(_ _)m>

関連するQ&A

  • フレーム内から開いたサブウィンドウから親ウィンドウの別フレームの操作を行いたい

    メニュー、メインの2つのフレーム分けしてあるページで、メインページからサブウィンドウを開きます。 その後、以下の2アクションを同時に行いたいのです。 (1)サブウィンドウから親ウィンドウ(メイン)をジャンプさせる (main.html→main2.cgi) (2)親ウィンドウ(メニュー)の画像をAからBに変更させる 現在window.openerでメインページの変更はできているのですが、 メニューページの画像のを変更がうまくできません。 方法としては (1)サブから親ウィンドウ(画像=A)を閉じさせて、再び親ウィンドウ(画像=B)を フレームセットごとムリヤリ開き直す。 (2)何らかの形でメニューページの情報を保存しておき、Onloadでサブからのジャンプ時に変更させる (3)サブから親ウィンドウのフレーム越し操作を行なって、メニューページの画像を変更する。 どの方法が可能でしょうか、もっといい方法がありますか。 お知恵拝借させてください。よろしくお願いします。 以下、かなり省略したソース説明です。 【フレームセット→cgi。記述は省略】 <frameset>  <frame src="menu.html" name="menu">  <frame src="main.html" name="main"> </frameset> 【メニュー→html】 <img src="A"> 【メイン→html】 function open_sub(url) { /**/ w = window.open(url, 'sub') } <!--本文--> <a href="javascript:open_sub('sub.html')">サブウィンドウ</a> 【サブ→html】 function change_main() { window.opener.location.href="main2.cgi?sub"; window.opener.focus(); } <!--本文--> <A HREF="JavaScript:change_main()">メインを変更</A>

  • フレームで区切られたウィンドウを閉じたい

    HTML,JavaScriptでの質問です。 Aの画面よりボタンのonClickイベントでBの画面を開いています。 Bの画面は親フレームがあり、上下にフレームを切っています。 Bの上フレームのボタンのonClickイベントでclose();を記述しているのですが、 フレームを切っているためにウィンドウが閉じないようなのです。 ※Bの上フレームだけを開き、ボタンを押すと閉じるので。 環境はWindows98,IE5.5です。 どなたか対応方法をご存知の方、よろしくお願いします。 Aのボタンでのイベント: onClick='subwin = window.open("B0.html","bbb");' Bのボタンでのイベント: onClick='close();'

    • ベストアンサー
    • HTML
  • フレームで呼び出した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名を取得できないのでしょうか。 どうか、よろしくお願いいたします。

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

    過去ログを参照していたら、次のようなサンプルを発見したのですが、 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>

  • 子ウインドウ内のswfから親ウインドウへリンク

    親ウインドウからwindow.openを使って子ウインドウを開いています。 子ウインドウ内にはボタンを含むswfがあり、 そのボタンをクリックすると親ウインドウ内にA.htmlを表示させたいと考えているのですが、 色々調べてみてもその方法を見つけることが出来ません・・。 swfからではなく普通のテキストや画像からなら <a href="" onclick="opener.location.href='A.html';return false">○○○</a> で可能なことは分かるのですが、getURLに上記を入れてもダメでした。 可能な方法はありませんでしょうか? よろしくお願いします。 (Flash8を使用しています)

    • ベストアンサー
    • Flash
  • フレーム内リンクを禁止したい

    表題のとおり、フレーム内へのリンクを禁止したく <script language="JavaScript"> <!-- if (parent.location.href != window.location.href) parent.location.href= window.location.href; //--> </script> を<head>と</head>の間に入れてみましたが、「書き込みができません。」とエラーになります。 どこか間違っているのでしょうか。

  • ウインドウ元のURLをフレームごとかえる

    小ウインドウを開いて、URLをクリックすると元のページのURLがかわるという方法を教えてください! 下記の書き方だと、フレームの中に新しいページが表示されてしまいます。 フレームごと書き換えるには、どうやって書けばよいのでしょう? <script language="javascript"> <!--// function ctrlwin() { window.opener.location.href="http://www.××.html"; window.close(); } //--> </script>

  • JavaScript フレーム

    Javascriptをふたつ書くことはできないんですか? 2つ書いたら「い」のほうしか宣言されないんでどうしたらよろしいですか? Update.java,kensaku2.java syouhin_kensaku.html,syouhin_master.html <html> <head> <title>メニュー</title> </head> <body> <script type="text/javascript"> <!-- function jump(){ // 設定開始(表示するフレーム名とリンク先URLを設定してください) parent.hakusi.location.href = "syouhin_kensaku.html"; parent.hakusi2.location.href = "Update"; // 設定終了 } // --> </script> <a href="#" onClick="jump(); return false;">あ</a> <br> <br> <script> <!-- function jump(){ parent.hakusi.location.href = "syouhin_master.html"; parent.hakusi2.location.href = "kensaku2"; //設定終了 } // --> </script> <br> <a href="#" onClick="jump(); return false;">い</a> <br> <br> </body> </html>

  • サブウィンドウから、親ページのリンクを操作し、自身は閉じるやり方

    すいません。javascriptに詳しい方、教えて下さい。 今、親ページからポップアップで、サブウインドウを開いています。 やりたいことは、サブウィンドウにあるcloseボタンを押したら、 親ウィンドウを指定のページに移動して表示させ、サブウィンドウ自身は閉じる動作がしたいです。 調べてみたら、opener.location.hrefというのを使えばできるみたいなのですが、こういう記述で大丈夫なのでしょうか? プレビューしてみたら、一応動いてくれているみたいですが、文法的にはどうなのでしょうか? 教えていただければ、ありがたいです。 以下にソースを記述します。 <a href="index.htm#F" onClick="opener.location.href='index.htm#F; return false;" javascript:window.close();">

  • 別フレームからページ切り替え

    こんにちわ。 ちょっと急ぎで解決した問題なんですが よろしくお願いします。 aとbの二つにフレームを分けたページにて aからtop.b.location.href="c.html";として bフレームのページを切り替えているのですが bフレームにhttpsのページを表示した場合、 その後はaフレームから切り替えできなくなります。 (location.hrefを実行する行でエラー) これはセキュリティ上の仕様でしょうか? 回避策などありましたらあわせて教えていただけると 助かります。