Javascriptのwindow.close()問題

最終更新日時:2007-03-01 17:53:33
JavaScript

Javascript の window.close() 問題


概要

ブラウザのウインドウを閉じたい場合、Javascript で window.close() とかやりますが、この「window」に相当する部分がいわゆる toplevel となるウインドウの場合に Netscape7 では動作しないという問題です。

動作しない理由等


これは単なるバグではなく、仕様のようです。
が、どうも定義が曖昧なようで…
Netscape のデバッグメッセージによると、「Javascript でウィンドウクローズを行うには Javascriptでウィンドウをオープンしていないといけません。」と表示されるのですが、その割には target="..." として開いたウィンドウは普通に
close できるようで。
実際にテストして確認した限りでは、何かのウィンドウを経由して開いたウィンドウは OK。
アイコン等をクリックしてブラウザを起動し、そのウィンドウ自体(説明が難しい。要するに論理的に toplevel ってことです)を閉じる場合は NG のようです。
ちなにに、Netscape 7.0 では OK だったようですが、Netscape 7.1 で NG になったところを見ると、7.0 で OK なのは単なるバグ見るべきでしょう。
まあ、厳密に言えば、target="..." で開いたウィンドウを閉じることが出来るのもバグっぽいですが。
ちなみに IE では普通に閉じれますので、上記に該当するようなコードを書くと、ブラウザ依存のコードとなってしまいます。
それは困るということで、Bugzilla Bug 190515 window.close() does not generate a confirm dialog for non script owned windowsで IE と同じ挙動にして欲しいという要望は前から上がっているようですが、 2005/02/07 現在、ASSIGN されていないようなので、変更される見込みは
無さそうです。
変更しない理由ですが、toplevel のウィンドウを自由自在に操作できてしまうと、いわゆるブラクラを作りやすくなってしまうということのようです。
個人的には、Javascript であまりに何でもできてしまうのは如何なものか…という気がするので、別に close できなくてもいいと思いますが。
まあ、世の中には変わった考えの人もいるようで、どうしてもブラウザ自身をボタンクリックで閉じたいと思う人もいるようで…

お問い合わせは 掲示板 にて。