- - PR -
ウィンドウの制御について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-11 13:34
親ウィンドウから子ウィンドウを起動する際に、
すでに同じ子ウィンドウが起動されているかを 確認してメッセージを表示したいのですが、 以下の操作を行ったときに制御が出来ません。 <実現可否が知りたい制御> @親ウィンドウから子ウィンドウ[名前:subWindow]を起動する。 A親ウィンドウを閉じる。 Bもう一度親ウィンドウを開いて@と同じ事を行う。 このような操作における制御を過去に経験された方もしくは 方法をご存じの方がおられましたらご教授お願いいたします。 <参考:実現できている制御> @親ウィンドウから子ウィンドウ[名前:subWindow]を起動する。 Aもう一度@と同じ事を行う。 | ||||||||
|
投稿日時: 2006-10-11 14:09
Windowsアプリですか?それともWebアプリですか?
言語はなんですか?(ついでに、.NET Frameworkのバージョンは?)
すでに子ウィンドウが開かれている場合、子ウィンドウは二重に開かれるのですか?それともメッセージを表示するだけで、二重には開かれないのですか? | ||||||||
|
投稿日時: 2006-10-11 14:19
申し訳ないです。アプリと言語を書き忘れていました。
ASP.NET2.0です。 >すでに子ウィンドウが開かれている場合、子ウィンドウは二重に開かれるのですか? >それともメッセージを表示するだけで、二重には開かれないのですか? メッセージを表示して開かないようにしています。 | ||||||||
|
投稿日時: 2006-10-11 16:27
ASP.NETでしたか。。。
subWindowを開く際に、サーバー側でセッションにフラグを持たせることで実現できそうな気もしますが、subWindowが閉じた時にセッションのフラグを消してやる必要があるので、難しいです。(できないことはないと思いますが、bodyタグのonunloadイベントでクライアント・コールバックを使う必要があります。こういう目的でクライアント・コールバックを使うのもどうかと思います。) あまりお勧めできません。 もし、親ウィンドウの更に親のウィンドウが存在するのなら、そちらのウィンドウにJavaScriptのフラグを持たせるなりすれば実現できると思います。 一番いいのは、subWindowをwindow.openで開く際に、名前を付けてやって、二重でウィンドウが開くことを防止することです。ただし、subWindowの内容は更新されてしまいます。また、メッセージを表示することはできません。(メッセージは本当に必要でしょうか?もう一度検討してみてください。) これが無理でしたら、subWindowをモーダルで表示するなど、他の方法を検討した方がいいと思います。 | ||||||||
|
投稿日時: 2006-10-11 17:11
よこけんさんご返信ありがとうございます。
そうですかぁ。やはり無理みたいですねぇ。。。 思いつきで書いて申し訳ないですが、 親ウィンドウ側のJavaScriptで開かれているすべてのウィンドウのオブジェクトを取得することは可能でしょうか? もし可能でしたら、そのオブジェクトから名前を抽出して同じ名前が付けられているかをチェックできるかなぁと思いまして・・・ | ||||||||
|
投稿日時: 2006-10-11 18:22
JavaScript で開いているのですから、JavaScript で管理することはできます。 window.open の戻り値を格納しておきましょう。 オブジェクトが空か、あるいには closed が偽値であれば、window.open。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-10-11 18:35
戻り値を親ウィンドウで保持していても、親ウィンドウが閉じられたら無理ですよね? 可能ならば親ウィンドウが閉じられても、子ウィンドウの2重起動を制御したいんです。 | ||||||||
|
投稿日時: 2006-10-11 19:10
少なくとも、私はそのような手段を知らないです。(まぁ、知ってたら最初に書いてますがw) また、window.○○ の ○○ にウィンドウ名を指定しても取得できませんし、名前を元にウィンドウを取得するということも無理かと。 諦めたほうがよいと思います。 |