- - PR -
javascriptでの"window.close"処理の件について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-19 13:18
いつもお世話になります。いのきです。
javascriptで質問があります。 処理中に「window.open」等で開いた画面に対して「window.close」を行っても問題ないのですが、 デスクトップやスタートにある「Internet Explorer」をクリックして開いた画面に対して、 「window.close」を行うと、下記の確認メッセージが出力されます。 **** メッセージ **** ウィンドウは、表示中のWebページにより閉じられようとしています。 このウィンドウを閉じますか? ******************** これは何故このような現象が発生するのでしょうか? また、この問題の対策はあるのでしょうか? 尚、環境はWindows XP(SP2)でIE6.0のブラウザを使用しています。 以上、お忙しいところ申し訳ありませんが、ご教授をお願い致します。 | ||||||||
|
投稿日時: 2005-12-19 13:24
こんにちは、でっちです。
なぜかは存じません。 通常のアプリにもある終了確認ですかね? 回避方法は、openerに何かしらセットしてあげれば良いです。
| ||||||||
|
投稿日時: 2005-12-19 13:42
追加
ネットスケープやFireFoxは↑じゃ閉じれませんね。 FireFoxのJavascriptコンソールによると 「スクリプトはスクリプトによって開かれたウィンドウ以外を閉じることができません。」 だそうです。 W3Cか何かの仕様ですかね?詳しい方補足をお願いします。 両対応の必要がある時は、こんな感じかな?
| ||||||||
|
投稿日時: 2005-12-19 13:46
いつもお世話になります。いのきです。
でっちさん、早速の回答ありがとうございます。 確かに上記方法でうまくいきました。 しかし、「window.close」だけではダメなのが、 「window.opener = window」を追加したら正常に処理した理由が どうしても分かりません。 よろしければ説明をお願いしてよろしいでしょうか? | ||||||||
|
投稿日時: 2005-12-19 17:03
JavaScript では「JavaScript によってオープンされたウィンドウに限って、無条件にクローズできる」ことになっています。
それ以外のウィンドウをクローズしようとしたときに確認画面が表示されるのは、JavaScript の仕様です。(セキュリティー面の理由による) window.opener というのは「JavaScript でオープンされたウィンドウに渡される、親ウィンドウオブジェクト」です。ここに window を入れてしまうという処理は、「JavaScript で開いたウィンドウなんだよ」と誤魔化しているわけで・・・かなり強引です。 | ||||||||
|
投稿日時: 2005-12-19 17:10
いわゆるセキュリティーホールですな。
| ||||||||
|
投稿日時: 2005-12-19 18:05
いつもお世話になります。いのきです。
流れプログラマさん、Anthyhimeさん、ご返答ありがとうございました。 なるほど、セキュリティーに関連することだったのですね。 それで、無理矢理「javascriptで開いた画面」とするために、このロジックになった訳ですね。 ありがとうございます。 勉強になりました。 | ||||||||
|
投稿日時: 2005-12-19 22:52
セキュリティとかでなったというのを俺も聞いたことあるが、
どういう問題が起こるんだろう。 window.opener になんか入れとくだけで回避できるというのは 良いことなのだろうか。 |