• ベストアンサー

親ウィンドウから開いた子ウィンドウをまとめて閉じるには?

親ウィンドウから複数のサブウィンドウを開いたとします。親ウィンドウを閉じる際に、開いているサブウィンドウを全て閉じたいと思っています。 開いたサブウィンドウのwindowオブジェクトを控えておいて、親ウィンドウのunloadで順番に閉じていけばできますが、イマイチかっこいい処理ではないので、一括してcloseできる処理を考えているところです。 なにかいい方法はないでしょうか?

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

  • ベストアンサー
  • sakmak
  • ベストアンサー率100% (1/1)
回答No.1

親ウィンドウが開いた子ウィンドウを一括で閉じるには、 子ウィンドウの一覧を把握していなくてはなりません。 ですが、いちいち子ウィンドウの変数を作成していくのは 面倒極まりないので、以下の手順で一括処理を行えます。 0)グローバル変数で、配列を宣言する ******ここは複数回の可能性あり******* 1)子ウィンドウを開く 2)子ウィンドウハンドルを配列に入れる *********************************** onUnload時 1)子ウィンドウハンドルを参照し、閉じられていないかチェック 2)子ウィンドウハンドルに対して close()メソッドを実行 一応、IE5上で動作確認したソースもあるのですが、 ご自分でお考えになる方が力になりますので。 どうしてもできないと言う時は、改めてソースを開示いたしましょう。

freshjive
質問者

お礼

現状、ご回答の内容とほとんど同じ処理を実装しています。ひょっとしてopenerは、自身から開いたウィンドウを把握してるのかと思って質問したしだいですが、把握していないってことがわかっただけで一歩前進です。ありがとうございました。

その他の回答 (1)

noname#118114
noname#118114
回答No.2

ひとまず以下のソースで出来ます。 しかしかっこいい処理とは言えません。 <html lang='ja'> <head> <script language='javascript' type='text/javascript'> <!-- var sub_win1; var sub_win2; function winopn() { sub_win1 = window.open('./subwin1.html', 'sub_win1') sub_win2 = window.open('./subwin2.html', 'sub_win2') } function winclose() { sub_win1.close() sub_win2.close(); } --> </script> </head> <body onunload='winclose()'> <center> <DIV style='cursor:hand' onclick='winopn()' ID='iL8'>開く</DIV><BR> </center> </body> </html>

freshjive
質問者

お礼

No.1の回答の実装例ですね。ありがとうございます。

関連するQ&A

  • サブウィンドウから親ウィンドウのファンクションを起動

    おせわになっております。 サブウィンドウから親ウィンドウのファンクションを起動する方法について困っています。 親ウィンドウから var subWin = window.open("a.html", "sub") でオープンしたサブウィンドウを閉じる場合に サブウィンドウから親ウィンドウの function sub_close() { subWin.close(); } を呼び出して閉じる処理をしています。 (サブウィンドウでwindow.opener.sub_close()) #これは正常に処理されます。 ここで問題なのですが、サブウィンドウがフレームの場合に、フレームセットされたHTMLから window.opener.sub_close() というような方法では親画面の操作ができないのでしょうか?(できませんでした。) 初歩的な質問で申し訳ないのですが、何かよい方法があれば教えてください。 宜しくお願いします。

  • 親→子1→子2→親のデータ渡し

    1.親ウィンドウからサブウィンドウ1を開く。 2.サブウィンドウ1でsubmitボタンを押すと値が  window.openerで親に渡り更にサブウィドウ2が開く。 ここまでは、出来るのですが 3.サブウィンドウ2でsubmitボタンを押して値を親ウィンドウに渡すにはどうしたらよいでしょうか? ここでwindow.openerを使うとサブウィンドウ1が親ウィンドウと判断してしまい上手くいきません。 上手い方法があれば教えて下さい。

  • ウィンドウが閉じようとしていることを知るには?もしくは、×をつかってウィンドウをとじれなくするには?

    いつもお世話になります。 表題のとおりなのですが、 Window.open でサブウィンドウを開いて、そのウィンドウが閉じられたことをリアルタイムに知るにはどうすればいいでしょうか? サブウィンドウのunloadイベントハンドラを使用してみましたが、ブラウザの×を押されるとイベントハンドラに通知がきません。 確実にウィンドウが閉じられることを知る方法はないでしょうか? よろしくおねがいします

  • サブウィンドウを閉じたときに親ウィンドウのリンク先

    サブウィンドウを閉じたときに親ウィンドウのリンク先 サブウィンドウを閉じたときに親ウィンドウを別URLに 飛ばすにはどうしたらよいですか? ちなみにサブウィンドウはボタンを押したらウィンドウが 閉じるという動きです。 下記のタグで実行できるのですが、 macのIE5.0で動きません。 IE5.0で動くようにしたいのですが・・・・ 下記がタグになります。 ご教授お願いします。 ======サブウインドウタグ======= <script type="text/JavaScript"> function jump_and_close() {  opener.location.href = "別URL";  window.close(); } </script> ======親ウィンドウへのリンク======= <input type="button" value="ボタン" onClick="jump_and_close()">

  • サブウィンドウから親ウィンドウをリロード

    サブウィンドウから親ウィンドウをリロードするときに、 window.opener.location.href = "A.html"; のような使い方をしていますが、親ウインドウのアドレスを指定せずに行う方法がありましたら教えていただけないでしょうか。

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

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

  • サブウィンドウを開くタイミングで親ウィンドウからデータを渡す

    親ウィンドウ、サブウィンドウを両方開いた状態でデータを受け渡す方法は見かけるのですが、 サブウィンドウを初めて開くタイミングで親ウィンドウからデータを渡す方法はありますでしょうか? 現在以下のように書いています。 親ウィンドウ function openLicense(sub, index){ w = window.open('', 'publish', 'toolbar=no,); w.document.open(); w.document.form.password_index.value=index; document.form.submit(); w.focus(); } サブウィンドウ <input name="password_index" type="HIDDEN" value=""> が、「w.document.form.password_indexはnullまたはオブジェクトではありません」 とエラーになります。何かいい方法はないでしょうか。

  • 子ウインドウを閉じたい

    お世話になります。 cgiアプリを組んでいます。 あるwindow(Awin - gmn00表示)が、ある画面(gmn01)を表示した際に、subwindow(Bwin)を開きました。 で、Awinが前の画面に戻ったときに、Bwinをcloseしたいのです。 Awinのgmn01には、戻るボタンがあり、戻るボタン処理でBwinをcloseすれば 当然閉じます。 ただ、それ以外にも異常系をふまえると、画面が戻る条件はたくさんあるので、 gmn00の初期処理などで Bwinが存在したら、Bwinをclodeするように試しましたが、 gmn00で、Bwinのオブジェクトが取得できません。 null になってしまいます。 なんかゴチャゴチャ書いてしまいましたが、わかっていただけますでしょうか。 ようするに、画面遷移先で開いた子ウィンドウは、遷移先が表示されている時だけ必要なので 別の画面に遷移した場合は、子ウィンドウは閉じたいのです。 やはり、遷移先の画面で、他の画面に遷移する箇所全てで 子ウィンドウのcloseをしないとダメでしょうか? アドバイス、よろしくお願いします。

  • 親ウィンドウのURL

    親ウィンドウからサブウィンドウをクリックイベントで表示させた場合に、サブウィンドウ側で呼びだした親ウィンドウのURLを取得することはできるでしょうか? 質問1 サブウィンドウをオープンする際に、GET変数なしでそれ(親ウィンドウのURL取得)がサブウィンドウ側でできるかどうか? 質問2 質問1の回答がYESの場合→具体的な取得方法 質問1の回答がNOの場合→GETで親ウィンドウのURLを取得する以外に方法はないか? 以上宜しくお願いいたします。

  • サブウィンドウを開くと親ウィンドウが上に戻ってしまう

    ページ途中のリンクからJavaScriptでサブウィンドウを開くとき、親ウィンドウが上に戻ってしまいます。 これをリンク位置でサブウィンドウが開くようにしたいのです。 どのようにすれば親ウィンドウが動かなくなりますでしょうか。 サブウィンドウ用のJavaScript function wopen1(){ window.open("aaa.htm","plain","scrollbars=yes"); } リンク側 <a href="#" onClick="wopen1()"> どうぞよろしくお願いいたします。

専門家に質問してみよう