2008年2月26日火曜日

IE7でwindowを closeする時に警告を出さない方法

target="_blank"などで子Windowで表示し、子Windowに閉じるボタンを付けた場合。javascriptでwindow.close()などとすると、IE7では下記のダイアログが表示される。
ウィンドウは、表示中の Web ページにより閉じられようとしています。
このウィンドウを閉じますか?
このダイアログを表示させない方法。


方法1 子Windowを開く方法を変える
javascriptによりwindow.open()で開くと、閉じる際にダイアログは表示されない。
<a href="#" onclick="window.open('test.html');return;">open</a>

方法2 子Windowを閉じる方法を変える
下記のように、ごにょごにょするとダイアログが表示されなくなる。
<a href="#" onclick="(window.open('', '_self').opener = window).close();">close</a>
openの第2引数は_topでも_parentでもよい。存在しないものは駄目。


IE6、IE7、Firefox2、Safari3(Windows版)で動作することを確認した。
ただし、IE7ではtarget="_blank"で開いてclose()するのを繰り返すと、IEが異常終了する問題があるので、方法1の方がよい。


参考:
 IE7 window.close()で確認ダイアログを出さずに閉じる
 2007-03-27 - urxの日記
 IE7で閉じる(window.close)と強制終了の対策

2 件のコメント:

  1. いい情報ありがとうございます。
    助かりました。

    返信削除
  2. いえいえ、お役に立てて何よりです。

    返信削除