- PR -

複数の子ウインドウ制御

1
投稿者投稿内容
まるこ
会議室デビュー日: 2005/12/03
投稿数: 12
投稿日時: 2005-12-03 12:34
はじめまして。

現在,JSF(MyFaces)+Springで開発を行っております。
クライアントのブラウザはIE5.5以上です。

親画面が閉じられる時に,
親画面から開かれた全ての子ウインドウを閉じるという
処理を行いたいのですが,何か良い方法はないでしょうか?

1.子ウインドウ名は(機能毎に)固定されています。
2.ウインドウはwindow.openで開いています。
3.仕様上,子ウインドウをモーダルウインドウにはできません。
4.仕様上,画面遷移時に,子ウインドウを消すことはできません。
5.ブラウザはIE限定と考えてよいです。

情報が不足しているかもしれませんが,
返答いただけたらありがたいです。
宜しくお願いします。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-12-03 14:20
window.openの戻り値(以降、ウィンドウハンドルと呼びますね)を記憶しておけば、
子ウィンドウを閉じることはできますよね。

ということは、どこかにウィンドウハンドルを保存しておく必要がありますね。
で、問題は、親画面が遷移してしまうので、親画面のフレームでウィンドウハンドル
を記憶しておくことができない、ということになるとおもいます。ここまではOKです
か?

昔、こんな解決策を使ったことがあります。

@親画面は、FRAMESETを利用する。「遷移する親画面」は、このFRAMESETの子フレ
ームにする。FRAMESETを設定しているHTMLは、親画面の画面遷移に関わらずブラウ
ザ側に常駐することになる。
AFRAMESETのHTMLに、ポップアップウィンドウのウィンドウハンドルを保存、管理
するようなJavaScriptの仕組みを作成する。

#正直なところ、Webアプリ以外の方法にしたほうがよいのではないですか?とおもい
#ますが…
まるこ
会議室デビュー日: 2005/12/03
投稿数: 12
投稿日時: 2005-12-03 20:58
シュンさん、早速の返答ありがとうございます。
おっしゃる通り、ウインドウハンドルの保存が出来ないことが問題点です。

確かに、シュンさんの方法で出来そうです。参考にしてみます。

ちなみにWEBアプリ以外の方法とは具体的にどのような
対処方法があるのでしょうか?
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-12-04 01:16
>ちなみにWEBアプリ以外の方法とは具体的にどのような
>対処方法があるのでしょうか?

クライアント側の複雑なウィンドウ制御が必要なら、最近
「リッチクライアント」と呼ばれている各種の解決策を採用
する、という方針もありではないでしょうか、ということで
した。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-12-04 10:03
こんにちは、でっちです。

過去ログからですが、子が親が閉じていないか定期的に見る方法もアリかと。
ご参考まで。
まるこ
会議室デビュー日: 2005/12/03
投稿数: 12
投稿日時: 2005-12-04 23:10
でっち6号さん、シュンさん、ご回答ありがとうございます。
>でっち6号さん
子画面から監視するという方法は私も考えていましたが、
あまり短い間隔で監視すると、結構負荷がかかるのではないかと考え、
長めの間隔で監視すると子画面の閉じるタイミングが変に
間隔が空き不自然な感じになるのではないかと思い敬遠していました。
>シュンさん
なるほど、リッチクライアントということですか。
言葉はよく見聞きしますが、実際にどういうものか具体的にわかりませんので、
調べてみます。

両名とも、どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)