- ベストアンサー
親画面からポップアップ画面が操作できない?!
こんにちは。お世話になります。 *やりたいこと* 親画面からポップアップ画面(子画面)を出し、子画面でボタンを押したときに 子画面からのcallbackで親画面をサブミットします。このとき子画面は閉じない。 その後親画面を閉じたとき(別のページに移ったとき)に、子画面も閉じたい。 サブミット後の親画面では子画面が認識できなくなり、親画面から子画面を 閉じることができません。 *やりたいこと*ができる方法はありませんか? ちなみに、サブミットのときに子画面を再表示しようかと考えましたが、子画面に 表示するデータが多く、リソースを使い果たしそうで実行できません。 *親画面のソース(こんなカンジにしたいです)* <HTML> <SCRIPT Language="JavaScript"> <!-- var WinSel = null; function NewOpen(){ //子画面のオープン WinSel = window.open("NewWin.asp","NewWin","width=200,height=200"); } function NCallBack(){ //子画面からのコールバック window.document.frmMain.action = "OyaWin.asp"; window.document.frmMain.target = "_top"; window.document.frmMain.submit(); } // --> </SCRIPT> <BODY><FORM name="frmMain" Method="post"> <INPUT TYPE="button" VALUE="子画面オープン" onCLick="NewOpen();"> <INPUT TYPE="button" VALUE="子画面クローズ" onCLick="WinSel.close;"> </FORM></BODY></HTML> よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<HTML> <HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"> <TITLE>ittochan parent</TITLE> <SCRIPT LANGUAGE=javascript> var dWin; function button2_onclick() { var child = "children.htm"; dWin = showModelessDialog(child,window,"status:no;dialogWidth:400px;dialogHeight:300px"); } function button1_onclick() { dWin.text2.value = text1.value; } //--> </SCRIPT> </HEAD> <BODY> <P>ごめんなさい。IE5(5.5?)限定です。</P> <P>こういうのはどうでしょうか。</P> <P>(1)↓のボタンを押して子ウィンドウ(実はコモンダイアログ、でもHTM)を開きます</P> <P>(2)「送信」 をクリックすると、子ウィンドウのテキストボックスに書き込まれます。</P> <P><INPUT id=button2 type=button value=子画面を開く name=button2 LANGUAGE=javascript onclick="return button2_onclick()"> </P> <P><INPUT id=text1 name=text1 style="WIDTH: 251px; HEIGHT: 22px" size=32 value=ヘ(・、ヘ)ホイホイ(ノ、・)ノホイホイ> <INPUT id=button1 type=button value=送信 name=button1 LANGUAGE=javascript onclick="return button1_onclick()"></P> <P><INPUT id=text2 name=text2></P> <P> </P> </BODY> </HTML> ---children.htm--- <HTML> <HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"> <TITLE>ittochan child</TITLE> <SCRIPT LANGUAGE=javascript> <!-- function button1_onclick() { dialogArguments.text2.value = text1.value; } </SCRIPT> </HEAD> <BODY bgColor=skyblue leftMargin=30 topMargin=30> <P> (3)「送信」をクリックすると<BR> 親ウインドウのテキストボックスに書き込まれます。</P> <P> <INPUT id=text1 value='o(・∩・)9"ガンバ!' name=text1> <INPUT id=button1 type=button value=送信 name=button1 LANGUAGE=javascript onclick="return button1_onclick()"></P> <P> <INPUT id=text2 name=text2 style="WIDTH: 239px; HEIGHT: 22px" size=30></P> </BODY> </HTML>
その他の回答 (3)
- ittochan
- ベストアンサー率64% (2667/4137)
>親画面からポップアップ画面(子画面)を出し、 >子画面でボタンを押したときに >子画面からのcallbackで親画面をサブミットします。 >このとき子画面は閉じない。 >その後親画面を閉じたとき >(別のページに移ったとき)に、子画面も閉じたい。 できます。 サンプル書くので暫くお待ちください。 _〆(・_・ )カキカキ
- FlossenEngel
- ベストアンサー率77% (132/170)
window.open("about:blank","NewWin","").close(); で子画面(NewWin)を開き直して閉じればよいのでは?
補足
ご回答ありがとうございます。 この方法で子画面を閉じることはできました! 質問には書いていなかったのですが、本当にやりたいことは サブミット後も親子関係を保つ(再構築?)ということなのです。 サブミット後も、子画面からのコールバックを受けることはできるのでしょうか? これを考えると、やっぱり親画面のサブミットと同時に子画面を再表示する しか考えられないのです!
- o84
- ベストアンサー率31% (128/407)
これに似たようなことは私もやろうと思ったけど、できなかったな。 「子画面を開いた時の親と、開いた時の子供」 双方がそこから一度でも遷移しちゃうともう認識できないんだよね。
お礼
できないですよね~。 あまりにもコテコテな作りをするくらいなら やらない方向で進めてみるのも手ですかね? ご意見ありがとうございました!
お礼
サンプルありがとうございました。 ダイアログですね!思いつきもしませんでした。 今この問題は子画面側でタイマーで親画面を監視するようにしてとりあえず 切り抜けています。 あまりいい方法ではないとおもうので、早速試してみます!