• ベストアンサー

親ウィンドウと子ウィンドウの制御について、教えて下さい!

親ウィンドウと子ウィンドウの制御について、質問です。 子ウィンドウを開いた状態で、親ウィンドウを閉じた時に 連動して子ウィンドウを閉じたいのですが、閉じません。 (複数の子ウィンドウの内、閉じるモノと閉じないモノがあります。  同じ記述をしているんですが...) よろしくお願いします。

  • HTML
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

補足を見ましたが、、、 SyosaiWinはグローバル変数としても宣言されていますが、戻値を受け取る時にローカル宣言してますよ。 グローバルのSyosaiWinとローカルのSyosaiWinは別の変数であり、openの戻値を受け取ったSyosaiWinはopenSyosaiWin関数の終了とともに消滅します。 恐らく「うっかり」だったのだと思いますが、もし変数のスコープや寿命についての理解が完全でないのであれば、再度質問してください。

chitama
質問者

お礼

ご指摘のとおりでした! 本当にありがとうございました!

その他の回答 (1)

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

どう記述しているのでしょうか?  開いたウィンドウの名前を全部記憶しておいて、それらを閉じるだけで、親のClose時に閉じればいいだけでは?

chitama
質問者

補足

記述内容 ---------------------------------------------------------------------- /* ウィンドウ内容移行時に、サブウィンドウを閉じる */ function closeSubWin() { closeHinmokuWin(); closeSyosaiWin(); } /* 品目表示ウィンドウ */ var HinmokuWin = null; function openHinmokuWin( p1String ) { var url = "n_wzhinmokul01.jsp?" + p1String; var opt = "directories=no,location=no,menubar=no,resizable=yes,status=no,toolbar=no, width=" + 720 + ",height=" + 480; var winname ="hinmokuWin" HinmokuWin = window.open( url, winname, opt ); HinmokuWin.focus(); } function closeHinmokuWin() { if( HinmokuWin && HinmokuWin.name ) { HinmokuWin.close(); HinmokuWin = null; } } /* 詳細表示ウィンドウ */ var SyosaiWin = null; function openSyosaiWin( p2String ) { var url = "n_wzpwst.jsp?" + p2String; var opt = "directories=no,location=no,menubar=no,resizable=yes,status=no,toolbar=no,scrollbars=yes, width=" + 720 + ",height=" + 600; var winname ="syosaiWin" var SyosaiWin = window.open( url, winname, opt ); SyosaiWin.focus(); } function closeSyosaiWin() { if( SyosaiWin && SyosaiWin.name ) { SyosaiWin.close(); SyosaiWin = null; } } //--> </script> </head> <body onUnload="closeSubWin();" > ---------------------------------------------------------------------- 見にくかったら、スミマセン。 HinmokuWin は閉じるのですが SyosaiWin は閉じません。 どうでしょうか? よろしくお願いします。

関連するQ&A

  • 別のサーバURLの子ウィンドウから親ウィンドウを制御したい。

    親ウィンドウから、別のサーバURLの子ウィンドウを開き、開いた子ウィンドウから親ウィンドウの制御を行ないたいと考えています。どのようにすればできるでしょうか? 同一サーバ内であれば、子ウィンドウのスクリプトで、 opener.name.value="Nakai"; というように記述すればよいですが、別のサーバ上のスクリプトから実行すると。 「書き込みできません」 と表示されます。(ブラウザIE6,サーバTomcat3) openerが使えないようであれば、ウィンドウ名を使用する方法などが無いか考えましたが、windowの取得方法ももわかりません。 よろしくお願いします。

  • 親ウィンドウから子ウィンドウの子ウィンドウを閉じたい

     親ウィンドウから子ウィンドウを開き、 その子ウィンドウで子ウィンドウ(孫ウィンドウ?)を開きます。 その状態で、親ウィンドウの画面移動で、子ウィンドウと孫ウィンドウを閉じたいのですが、できません。 JavaScript1--  ssWin = window.open('---'); ---- JavaScript2--- if(ssWin != null){ if (!ssWin.closed){ssWin.close(); }} ------ 子ウィンドウまでは上記の方法で閉じれるのですが、孫ウィンドウの制御となると、どうやったらいいかわかりません。  どなたかすいませんが、いい方法がありましたら、ご教授くださいませ。

  • 親ウィンドウの制御

    よくある質問なのでしょうが、過去ログを見てもよくわからなかったので(…アホ) 質問させてください。 子ウィンドウを開いた時に、[OK]ボタンが押されるまで 親ウィンドウをいじれないようにする、というVBのモーダルモード(?)のようなことは IEでできるのでしょうか? <script language=VBScript>と書いて 子ウィンドウをvbModalとしてやればいいのでしょうか? よろしくお願いします。

  • 子ウィンドウのデータを親ウインドウに

    子ウィンドウのチェックボックスの内容を親ウィンドウに代入 子ウィンドウのチェックボックスの複数選択内容を親ウィンドウのテキストボックスに、カンマ区切りで複数代入したい。のですが。

  • 親ウィンドウと子ウィンドウに関して

    javascriptに関して初心者なので、わからないことが多く、質問させていただきます。 今回、親ウィンドウを子ウィンドウについてわからないことがあったので、箇条書きで説明させていただきます。 1 親ウィンドウに3x3のセルがあります。一つ一つののセルがクリックできるようになっていて、セルの背景が変化します(例:元は白でクリックすると黒) 2 セルをダブルクリックすると、子ウィンドウが出てきて、その子ウィンドウも3x3のセルを持っていて、セルをクリックすると、その背景がかわります。 子ウィンドウがまだウィンドウを開くことはありません (↑ここまでは自分でできましたが、ここからがよくわかりません) 3 子ウィンドウを開いたとき、親ウィンドウのどのセルから来たのがを子ウィンドウに表示する 4 子ウィンドウのセルの背景が変わった数(この場合9個中何個かわったか)で、また親ウィンドウのクリックしたセルの背景がかわる (例:子ウィンドウのセルが1~3個黒なら、親ウィンドウのそのセルの背景が薄いグレー などです) 意味がわかりにくいかもしれませんが、よろしくお願いします。 ヒントでもかまいませんので、ご協力していただけると幸いです。

  • ウィンドウの制御について、質問です。

    親画面から、子画面を呼び出し二つのウィンドウが立ち上がっている状態です。 ちなみに、『親画面は一覧表示画面』、『子画面は登録画面』となっています。 親画面がなんらかの形で消されてしまった場合、 子画面も、同時に消すように制御しています。 そこで、子画面において、登録処理を行った場合に限り、 親画面を最新の状態を表示するため再表示(リロード)をさせています。 そのため、上にある制御のために 親画面を再表示すると子画面が消えてしまうのです。 登録処理後の場合は、親画面を再表示させたあとも子画面を表示させたままに したいのですが・・・。 それは可能なのでしょうか? やはり、フラグか何かを持たせて、親画面の「OnUload」のところで、 フラグで判断し、 「更新されて再表示する場合は、子画面をそのまま」 「そうでない場合は、子画面を消す」のようにするしかないのでしょうか? 何かいい方法がありましたら、御教授くださいませ。 よろしくお願いいたします。

  • 親ウインドウから子ウインドウと同時にID

    親ウインドウから、子ウインドウを開く際に、子ウインドウ内のID=”レイヤー″を同時に呼び、子ウインドウを変化させるスクリプトがありましたら教えてください。 ID="レイヤー"は複数です。

  • 子ウインドウを閉じて 親ウインドウを更新

    初歩的なことなのかもしれませんが、ご教授いただけると助かります。 やりたい動作は、 親ウインドウから<a href="" target=_blank>で 子ウインドウを開きます。 子ウインドウで処理を行った後、 ----ここからの動作がわかりません----- 子ウインドウ上のボタンかアンカータグで 親を再読み込み 子を閉じる 親にフォーカス こんな動作をJAVASCRIPTで実現可能でしょうか? 結果的に、子が閉じられ、親が再読み込みされた状態でフォーカスがあたるようにできれば最高です。 暇なときでかまいませんので、どうぞよろしくお願いいたします。

  • 親ウインドウから子ウインドウにデータを渡すには?

    はたしてこの質問がASPなのか、Javascriptでできるものなのかわからないので、とりあえずこちらで質問させていただきます。 親ウインドウの入力フォームから、入力されたデータを、子ウインドウで表示するにはどうしたらよいのでしょうか? target="_blank" は子ウインドウのサイズを指定したいので、使わない方向でお願いします。 結局、親ウインドウからデータ入力→ボタンを押す→子ウインドウに親ウインドウのデータを表示・・・ がやりたいのです。 よろしくお願いします。

  • 親ウィンドウに制御を戻しcgiを実行させるには?

    (1) CGI結果をブラウザに表示させ(これを親ウィンドウとします)、 (2) 親ウィンドウのボタン押下で子ウィンドウをjavascriptで開き、 (3) その子ウィンドウのボタン押下で、親ウィンドウで違うCGIを実行させ、自身のウィンドウ(子ウィンドウ)は閉じる。 ということをしたいのですが、(3)の親ウィンドウへ制御を戻してCGIを実行させることが出来ません。この部分を教えて頂きたいです。自身のウィンドウは閉じられます。 子ウィンドウHTMLの抜粋 <html lang=ja> <head> <title>スケジュール設定結果</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <script language="JavaScript1.3" type="text/javascript" src="./script/xxx.js"></script> </head> <body> <form name="aaaa" method="post"> <center><input type="button" value="OK" onClick="javascript:xxxxx();"></center> </form> </body> </html> JavaScriptの抜粋 function xxxxx() { self.document.aaaa.target = ; ← この部分に設定するものは? self.document.aaaa.action = "./foo.cgi"; self.document.aaaa.submit(); window.self.close(); return; } ちなみに、「target」の部分に、window.openerとしても、親ウィンドウは何も変化なく、別ウィンドウが開いてしまいました。 親ウィンドウには特にwindow名称をつけていません。ブラウザ起動時の状態です。

専門家に質問してみよう