IEにおいて、window.closeを使うと、「なぜか?」、警告が表示されます。
これを回避する方法をちょっと調べてみました。
まず、現象として、これだけ書くと、警告が発生します。
window.close(); |
こちらのサイトを参考にすると、window.openerに何かしら、値を入れれば回避できると書かれてしましたので、
window.opener = "hoge"; window.close(); |
と変更することによって、無事に警告が表示されることなく、親画面を閉じることができました。
おそらく感覚として、擬似的な親画面がいますよーということを最初に宣言しておき、自分自身を小画面にすることによって、警告が表示されないのかなと。
ただ、IE6は消えるのですが、IE7では消えませんでした。
さらに、ぐぐってみると、IE7 window.close()で確認ダイアログを出さずに閉じるというエントリーにて、IE7でも親画面をクローズする方法が書かれていました。
これによると、以下の一文に変更することによって、解消されるみたいです。
(window.open('','_top').opener=top).close();
via:IE7 window.close()で確認ダイアログを出さずに閉じる
確かにこれを実行してみると、警告が表示されずに終了しました。
さらに、IE6でも終了しました。
ということで、単純に、この方法を採用した方がよさげかなと結論。
close()時の確認は昔よく悩まされたやつだねー。
返信削除結局セキュリティ上の問題だとかなんだとかで、JavaScriptで閉じる事ができるウィンドウはJavaScriptで開かれた物のみって事に決まってるらしいね。
(誰が決めたんだろう。そしてどこに明記してあるんだろう……)
しかしopenerに値入れるだけで回避できるって……これはある意味セキュリティホールな気がするわ。