親ウィンドウから子ウィンドウを閉じるのでなく、子ウィンドウが親ウィンドウや条件を元に自分自身を閉じるアプローチ。
子ウィンドウをオープンした場合に、子ウィンドウのonloadに登録して使用する。
1秒おきにチェックするのでパフォーマンスに注意
function setOpenWindowCloser(){ var count = 0; setInterval(function() { try { //親ウィンドウが閉じられた場合 if(!window.opener || window.opener.closed){ window.close(); } //エラー画面やログアウト画面等に遷移した場合に閉じる //別ウィンドウを閉じる特定の画面にhiddenで埋め込んでおく if (window.opener.document) { if(window.opener.document.getElementById('xxx')){ window.close(); } } }catch(e){ // 親画面にアクセスできない場合 何故かたまに発生するので5回試してクローズ // 出せるとしてalertぐらいかな。。 count++; if (count == 5) { window.close(); } } },1000); }
※IE6,7しか確認してないす
0 件のコメント:
コメントを投稿