• ベストアンサー

次のウインドウを開いた時に前のウインドウを閉じるタイミングについて

現在ページから次のウインドウを開く際に次のウインドウを開いたら、元のページ(現在ページ)を閉じる方法は、次のウインドウ内に、 <METAタグ内の<scriptで window.opener.window.close(); とすればよいのでしょうか? それとも、OnLoadで上のwindow.opener.window.close()とすれば良いのでしょうか? また、現在ページの段階から次のページを呼んだ瞬間に現在ページを閉じる方法はあるのでしょうか? 定石があるのでしたら知りたいです。

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

  • ベストアンサー
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

私が実現している方法です。 呼出元ファイルに追加しています。 まずは、 ret = window.open('../aaaa,html','','location=no,menubar=no,toolbar=no, scrollbars=1,status=no,resizable=yes,top=0,left=0,height=' + hs + ',width=' + ws); if((ret == null) || (ret.closed == true)) { alert("ポップアップブロッカーが機能しました。\nポップアップブロッカー回避操作を行って下さい。"); } // 画面を強制終了する ForceClose(); ForceClose();は、以下のように、なっています。 //********************************************// // 強制画面終了 // //********************************************// var busy=false; function ForceClose(){ if(!busy){ busy=true if(navigator.appName=="Netscape"){ /* window.openで開かれたウィンドウでは警告が出ない このウィンドウ自体がwindow.openで開いたものだと思わせるようなイメージ */ window.open("","_top") window.close() }else{ if(document.all&&(navigator.userAgent.match(/MSIE (\d\.\d)/),RegExp.$1)>=5.5) { /* IE5.5以降も考え方は同じ IE6.0では普通にclose()だけでも警告なし */ var w=window.open("","_top") w.opener=window w.close() } else { /* IE4,IE5.0は[いいえ]を選択したらまた同じダイアログを表示し続ける*/ window.close() var timer=setTimeout("busy=false;forceclose()",500) } } } }

関連するQ&A