【おやじのweb技】 html/javascript/css等
winXP+IE6
TopPage表示 /  保 存 /  印 刷 /  Window Resize /  Window Close
k017 ウィンドウクローズするとき表示される確認ダイアログを表示しない
web工房  Copyright(C) 2005 web工房 All Rights Reserved 
このページのトップに戻る /  Window Resize /  Window Close /  最終更新日表示
action

※window.close()によりウィンドウを閉じるとき、上記のような確認ダイアログが表示されることがあります。このダイアログボックスを表示しないなようにします。
※ウィンドウクローズ時の確認ダイアログボックスがどのような状況の場合に表示されるかは省略します。

web技

◆【スクリプト】
※確認ダイアログを表示しないようにするためには、window.close() の前にwindow.opener="dummy" という一行を付加します。

-----次の行から(copy)-----
window.opener="dummy"
window.close()
-----上の行まで(copy)-----

◆【使用例1】
※親ウィンドウからモーダルウィンドウを開くとき
  window.showModalDialog("login.html","Login_D");
  詳細は[技b006]ダイアログボックス(モーダルウィンドウ)を開く、を参照して下さい。
※下記は、子ウィンドウに引き渡される値window.dialogArgumentsがLogin_Dでないとき、すなわち所定の親ウィンドウからオープンされなかったとき(直接アドレスバーにURLを入力してアクセスしたとき等)、強制的にウィンドウをクローズするサンプルです。
※window.opener="dummy"がないと、alertダイアログのあとでウィンドウクローズの確認ダイアログが表示されます。
※条件に合致しなかったらdocument.body.style.visibility='hidden';でウィンドウの内容を表示しないようにしています。

-----次の行から(copy)-----
//親ウィンドウ(index.html)から引き渡された値のチェック
if (window.dialogArguments!="Login_D"){
 document.body.style.visibility='hidden';
 alert("所定のページからリンクされていないので操作継続できません。");
 window.opener="dummy"
 window.self.close();
}
-----上の行まで(copy)-----

◆【使用例2】
※エラーが発生したとき/オープン時 window.onerror=ErrTrap;を実行しておきます。
※下記は、エラーが発生したときErrTrap()が実行され、アラートダイアログが表示されたあとウィンドウをクローズします。
※window.opener="dummy"がないと、alertダイアログのあとでウィンドウクローズの確認ダイアログが表示されます。
※エラーが発生したらdocument.body.style.visibility='hidden';でウィンドウの内容を表示しないようにしています。

-----次の行から(copy)-----
//エラー処理(1)---オープン時実行
window.onerror=ErrTrap;

//エラー処理(1-2)
function ErrTrap(errMsg,errFile,errNo) {
 document.body.style.visibility='hidden';
 alert("◆" + errMsg+"\n◆" + errFile +"\n◆"+errNo + "\n\n■エラーが発生したのでウィンドウをクローズします。");
 window.opener="dummy"
 window.self.close()
}
-----上の行まで(copy)-----

解説等

◆スクリプトを実行中にエラーが発生ときや不正な処理をしたときに強制的にウィンドウをクローズしたいことがあります。そこでウィンドウクローズの確認ダイアログが示され「N」(クローズしない)を選択されると処理途中のウィンドウが残されてはなはだ具合が悪い。そんなときに使用できます。

keyword ◇window.opener◇close

history

◇(2005.02.05)設置

注意

◆操作MENUの[Window Resize]を選択するとウィンドウサイズが変更可能です。
◆上記の[web技]をクリップボードにコピーしテキストエディタに貼り付けて使用する場合は、表示のための改行記号や全角・半角スペースの記号等を削除して下さい。
-----次の行から(copy)-----
(この部分をクリップボードにコピーしてテキストエディタ等に貼り付けて下さい)
-----上の行まで(copy)-----