プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
IEで確認ダイアログを出さずにウィンドウを閉じる
結論から言えば

window.open('about:blank','_top').close();

とか

(window.open('','_self').opener=window).close();

で何となくそれっぽくなる(--)ノ
IE8でしか確認していないですけどね(-。-)ぼそっ
多分その他のバージョンでも動くっしょ。

それでは細かいところを見ていきます。

JavaScriptで「window.close()」ってのがありますよね。
子画面を閉じたりするときに使うアレです。
あれって実は

・targe指定で開かれた新しいページ
・window.open()とかで開かれた新しいページ

のどちらかじゃないと正常に機能しないのです。
要は「子画面じゃないと怒っちゃうぞ!」ってことですね。

例えばURL直打ちで開いた画面に対して「window.close()」すると
ブラウザによって挙動が変わります。

IEの場合は、

ウィンドウは、表示中の Web ページにより閉じられようとしています。
このウィンドウを閉じますか?

のような確認ダイアログが出るのですが、ぶっちゃけこれを出さないようにしたい。
業務システムだから他のブラウザは見なかったことにするにしてもIEだけは何とかしたい!
ってのがきっかけです。

ほんで見つかったやり方が

window.open('about:blank','_top').close();

とか

(window.open('','_self').opener=window).close();

でした。

なるほどなるほど。

書き方が違うだけでやっていることはどちらも一緒ですね。
自分をターゲットに新規ウィンドウを開いて(つまり親がいることにして)それを閉じる。
「自分は子画面だ!だから閉じるぜ!文句言うなよ!」にする作戦です。

取りあえず動いたので現状はこれで良しとしますが……
ちょっと裏ワザっぽいやり方なので、新しいバージョンのブラウザでは
いずれ動かなくなりそうだなぁ(--;
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● JavaScript  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事