- PR -

子ウィンドウにフォーカスを当て続ける方法

1
投稿者投稿内容
あひる隊長
常連さん
会議室デビュー日: 2003/07/23
投稿数: 36
投稿日時: 2004-04-12 11:23
現在Webアプリの開発を行っております。

親ウィンドウからJavaScriptを使って子ウィンドウを開いたのですが、
子ウィンドウを閉じるまでの間、親ウィンドウにフォーカスを移さずに
子ウィンドウのテキストボックスに値を入力する必要があります。

当初子ウィンドウのbodyタグのonBlurを使って子ウィンドウからフォーカスが
外れたら強制的に子ウィンドウにフォーカスを設定する処理で実装しており
ましたが、これだと子ウィンドウのテキストボックスにフォーカスを当てた
場合もテキストボックスからフォーカスが外れてしまうことが分かりました。

ShowModalDialogを使う方法も考えましたが、これだと子ウィンドウのボタン
(サーバーコントロール)を押した時に親ウィンドウにもポストバックが発生
してしまうので現ロジックでは問題が出てしまいます・・

何か良い方法がありましたら教えて頂けますでしょうか?

開発環境はWindows2000Server + VS.NET2003です。

宜しくお願いいたします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-12 11:37
ブラウザですので、おそらくそういうことは無理ではないかと思います。
使ったことはありませんが、ShowModalDialogだってIE独自の特別な機能なんですよね。

親のウィンドウの全てのコントロールを使用不可にしておくというのはどうですか。
あるいはウィンドウの座標を画面の外(-10000,-10000等)に変更するとか。こうしてもタスクバーには残ってますけどね。
あれ・・・全画面表示している場合にはどうなるんだろ?
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2004-04-12 11:50
引用:

上尾幽霊さんの書き込み (2004-04-12 11:23) より:
現在Webアプリの開発を行っております。

親ウィンドウからJavaScriptを使って子ウィンドウを開いたのですが、
子ウィンドウを閉じるまでの間、親ウィンドウにフォーカスを移さずに
子ウィンドウのテキストボックスに値を入力する必要があります。


こんにちは。この↑要求を満たすもっとも手っ取り早いやり方はshowModalDialogと思いますが…。
showModalDialogで表示した子のボタンを押した時に親にPostBackが発生するという辺りがよく分かりません。そのボタンを押すと子を閉じるのでしょうか?
そうであれば(親画面のサーバコントロールのonclickにshowModalDialogのコードがあると仮定して書きますが)、showModalDialogの後で__doPostBackが呼ばれている筈なので、showModalDialog呼び出し直後にreturn false;でonclickイベントを抜ければPostBackは発生しないと思います。
AC
会議室デビュー日: 2003/01/14
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2004-04-12 22:42
引用:


ShowModalDialogを使う方法も考えましたが、これだと子ウィンドウのボタン
(サーバーコントロール)を押した時に親ウィンドウにもポストバックが発生
してしまうので現ロジックでは問題が出てしまいます・・


上尾幽霊さんはじめまして。

同じようなケースを以下のような方法で実現しています。
・親ウィンドウのボタン押下時にshowModalDialogで
 ダミー画面を開く。
・ダミー画面のPage_Loadで、
 「本当に開きたい画面」をダミー画面内IFRAMEのsrcにセット。

「本当に開きたい画面」はSessionに入れるなり、QueryStringで渡すなり。
これなら、子ウィンドウ内のボタンを押した際にも
親ウィンドウには影響しないと思います。
1

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