2009/05/12

[JavaScript]親画面クローズ

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でも終了しました。

ということで、単純に、この方法を採用した方がよさげかなと結論。

1 件のコメント:

  1. close()時の確認は昔よく悩まされたやつだねー。

    結局セキュリティ上の問題だとかなんだとかで、JavaScriptで閉じる事ができるウィンドウはJavaScriptで開かれた物のみって事に決まってるらしいね。
    (誰が決めたんだろう。そしてどこに明記してあるんだろう……)

    しかしopenerに値入れるだけで回避できるって……これはある意味セキュリティホールな気がするわ。

    返信削除