親ウィンドウに制御を戻しcgiを実行させるには?

このQ&Aのポイント
  • 質問文章の要点は、親ウィンドウに制御を戻しCGIを実行する方法についてです。
  • CGI結果を親ウィンドウに表示させ、親ウィンドウのボタン押下で子ウィンドウを開き、子ウィンドウのボタン押下で親ウィンドウで別のCGIを実行させることが目的です。
  • しかし、window.openerを使用しても親ウィンドウに制御を戻すことができず、新しいウィンドウが開いてしまいます。
回答を見る
  • ベストアンサー

親ウィンドウに制御を戻しcgiを実行させるには?

(1) CGI結果をブラウザに表示させ(これを親ウィンドウとします)、 (2) 親ウィンドウのボタン押下で子ウィンドウをjavascriptで開き、 (3) その子ウィンドウのボタン押下で、親ウィンドウで違うCGIを実行させ、自身のウィンドウ(子ウィンドウ)は閉じる。 ということをしたいのですが、(3)の親ウィンドウへ制御を戻してCGIを実行させることが出来ません。この部分を教えて頂きたいです。自身のウィンドウは閉じられます。 子ウィンドウHTMLの抜粋 <html lang=ja> <head> <title>スケジュール設定結果</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <script language="JavaScript1.3" type="text/javascript" src="./script/xxx.js"></script> </head> <body> <form name="aaaa" method="post"> <center><input type="button" value="OK" onClick="javascript:xxxxx();"></center> </form> </body> </html> JavaScriptの抜粋 function xxxxx() { self.document.aaaa.target = ; ← この部分に設定するものは? self.document.aaaa.action = "./foo.cgi"; self.document.aaaa.submit(); window.self.close(); return; } ちなみに、「target」の部分に、window.openerとしても、親ウィンドウは何も変化なく、別ウィンドウが開いてしまいました。 親ウィンドウには特にwindow名称をつけていません。ブラウザ起動時の状態です。

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

こんな手順ならできそうです…かな。 ・親ウィンドウ側にもフォームを置く。(display:noneとでもしておいて表示上は隠す) ・子ウィンドウのjavascriptで親ウインドウのフォームに 子ウィンドウのフォーム内容をコピーし、親ウィンドウのフォームをsubmit。 ・子ウインンドウを閉じる。

peanuts18
質問者

お礼

上記の通りでうまくいきました。ありがとうございます。

peanuts18
質問者

補足

なるほど。今はself.document…としているので、 自身にsubmitしてしまっているのですね。 それを親ウィンドウの隠しフォームにすれば良いということですね。 やってみます。

関連するQ&A

  • window.openで開いた子ウィンドウから親ウィンドウのjavascriptを実行するには

    window.openで開いた子ウィンドウから親ウィンドウのjavascriptを実行するにはどうしたらよいのでしょうか。 子ウィンドウから <INPUT TYPE="button" value=\"実行\" onClick=opener.document.jikkou();> や <INPUT TYPE="button" value=\"実行\" onClick=opener.jikkou();> 等のボタンを作ってみましたが、無反応でした。 すいません。宜しくお願いします。

  • 子ウインドウから親ウインドウのselectボックスを変更したい

    行いたいことは郵便番号による住所検索です。 PerlとMysqlをつかって郵便データは取得します。 親ウインドウのテキストボックスに郵便番号を入れて、子ウインドウで都道府県と以下住所を表示させます。 入力ボタンというものを押すと、親ウインドウの都道府県selectボックスと住所テキストボックスに入力させたいというロジックです。 ////////親フォーム////////////// <SCRIPT language="JavaScript"> function OpenZipWin1(){ var Myzip =document.fm.zip1.value; window.open("hoge.cgi?mode=zip_search&zipcode=" + Myzip,"new","width=500,height=270"); } </SCRIPT> <form action="hoge.cgi" method=post name="fm"> <input type=text name=zip1 size=10 maxlength=8 value=""><a href="javascript:void(0);" onClick="OpenZipWin1();">検索</a><br> <select name="pref"> <option value="">都道府県選択</option> <option value="1">北海道</option> <option value="2">青森県</option> <option value="3">岩手県</option> <option value="4">宮城県</option> <option value="5">秋田県</option> <option value="6">山形県</option> ・・・・ <option value="47">沖縄県</option> </select> <input type=text name=add value="" size=60> </form> ////////子フォーム////////////// <SCRIPT language="JavaScript"> function setForm() { var Mypref = document.subForm.pref.value; window.opener.document.?????????? = Mypref; var Mycity = document.subForm.city.value; window.opener.document.fm.add.value = Mycity; } //--> </SCRIPT> <p>検索結果</p> <form name="subForm"> <table border="0" cellpadding="5"> <tr> <td nowrap>郵便番号</td> <td>110-0001</td> </tr> <tr> <td>住所</td> <td> <input type="text" name="pref" size="20" value="東京都"> <input type="text" name="city" size="60" value="台東区 谷中"></td> </tr> </table></form> <p align=center><input type="submit" value="入力" onclick="javascript:setForm();self.close()"></p> <p align=center><a href="#" onclick="javascript:window.close()">閉じる</a></p> 問題なのは子ウインドウは都道府県が日本語で、親ウインドウはselectのvalueは数値、要素の方が日本語なのです。 子ウインドウの値を親ウインドウの要素の方と合わせたいのです。 上記の子ウインドウのJavaScriptで window.opener.document.?????????? = Mypref; の部分でうまくすればいいのかな・・・とは考えてみたもののうまくいきません。 恐れ入りますがご教授おねがいできませんでしょうか。 よろしくお願いいたします。

  • JavaScriptで子ウィンドウからメールを送信

    javascriptで子ウィンドウからメールを送信したいです。 JSは全くの素人なので、手探りでやっています。 サーバーはCGIが使えない環境なので、何かよい方法はないでしょうか? <html> <title>sub window sample1</title> <body> <h1>Sub Window Sample1</h1> <script language="JavaScript" type="text/javascript"> function formSubmit(){ window.open("","window1","width=400","height=200"); document.getElementById("form1").target = "window1" ); } </script> <form id="form1" action="" > <input type="button" name="submit" value="mail window!" onClick="formSubmit()"> </form> </body> </html> このようなソースを途中まで書いてみましたが、子ウインドウすら開いて くれません。 ぜひご教示をよろしくお願いいたします。

  • javascriptでCGIを実行するには

    htmlタグ <form method="post" action="・・・/cgi-bin/gogo.cgi"> <input type="text" name="name" size="20" value=""> <input type="submit" value="送信"> 上記で送信ボタンを押すとcgi側でnameを受け取れますが、 以下の場合はcgiは動作するのですが、nameを受け取れません、 受け取れる方法を教えてください。 <script type="text/javascript" language="javascript"> <!-- function gogo(){ document.write('<img src="・・・/cgi-bin/gogo.cgi">'); } // --> </script> </head> <body> <form method="post" action="javascript:gogo()"> <input type="text" name="name" size="20" value=""> <input type="submit" value="送信"> </form>

  • 子ウィンドウから親ウィンドウのテキストフィールドにデータを表示する

    子ウィンドウのリンクをクリックするとそのリンクの内容が親ウィンドウのテキストフィールドの中に表示されるというのを作りたいのですが、 親ウィンドウ <html> <head> <title>サブウィンドウから親ウィンドウのテキストフィールドにデータを表示する</title> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> </head> <body> <a href="javascript:;" onClick="MM_openBrWindow('subwindow.html','','width=160,height=160')">open</a> <form name="myFORM"> <input type="text" name="tBox"> </form> <form name="myFORM2"> <input type="text" name="tBox2"> </form> </body> </html> 子ウィンドウ <html> <head> <title>サブウィンドウから親ウィンドウのテキストフィールドにデータを表示する</title> <script Language="JavaScript"> <!-- function setData() { window.opener.document.myFORM.tBox.value="灯油ストーブ"; } function setData2() { window.opener.document.myFORM2.tBox2.value="シャワー"; } // --> </script> </head> <body> <a href="#" onClick="setData()">灯油ストーブ</a> <a href="#" onClick="setData2()">シャワー</a> </body> </html> これではリンク数とテキストフィールド数が同じじゃないといけないですよね。 作りたいのはテキストフィールドは15個あって、リンクの方は70個ぐらいあります。リンクをクリックするとテキストフィールドの中へ順々に表示させたいのですが、どうしたらよいのでしょうか? どうかアドバイスをお願いいたします。

  • 子ウィンドウから親ウィンドウのチェックボックス

    おそれいります。 現在、子ウインドウで、window.opener.document.getElementById('text1').value='4444'; window.opener.document.getElementById('text2').value='こんにちは'; window.opener.document.getElementById('text3').value='今日は晴れ'; として、親ウィンドウで <input type="text" id="text1"> <input type="text" id="text2"> <input type="text" id="text3"> へ値をセット出来ているのですが、 この記述の流れで親ウィンドウのチェックボックスを子ウィンドウからtrueにすることはできるでしょうか。よろしくお願いします。

  • window.onloadの実行と抑止の分岐方法

    親ウィンドウと子ウィンドウの間でデータを共有したいと思い、下記のソースを作成しました。 親ウィンドウで任意の文言を入力し、子ウィンドウを開くをクリックすると、子ウィンドウに値が渡されます。 子ウィンドウで任意の文言を入力し、値をセットをクリックすると、親ウィンドウに値が渡されます。 しかし親ウィンドウから子ウィンドウで値を渡した後、任意の文言を入力し送信ボタンを押すと、index.phpで子ウィンドウの変更後の文言をテキスト欄の値をセットしたあと、 子ウィンドウのwindow.onloadが走って値を追加してしまいました(下記のソースは簡易的なもののため、子ウィンドウのテキスト欄には<input type="text">を使用しておりますが、 実際には<select multiple="multiple">を使用しているため、下記のような表示になります)。 1. 親ウィンドウから子ウィンドウにセットされたテキストの例 あああ 2. 子ウィンドウで変更した文言 いいい 3. 送信ボタンクリック 子ウィンドウのselectには下記が表示されます。 いいい あああ その為、子ウィンドウでsubmitした際は、window.onloadを抑止できれば良いと思ったのですが、具体的にどう記述すればよいかわかりませんでしたので、 アドバイスいただける方がいらっしゃいましたら、ご教示の程、よろしくお願いします。 また、window.onloadの抑止にこだわっているわけではありません。 上記の送信ボタンクリック時、子ウィンドウのselectの中が「いいい」と表示される方法があれば大丈夫です。 【親ウィンドウ(index.html)】 <script type="text/javascript"> <!-- function window_open() { window.open('sub.html', null, 'width = 640, height = 480, scrollbars = yes' ) }; //--> </script> </head> <body> <form action="index.php" method="post" name="form00" id="form00"> <a onclick="window_open()" href="javascript:void(0)">子ウィンドウを開く</a> <br /> <input type="text" name="text00" value="" /> </form> </body> 【子ウィンドウ(sub.html)】 <script type="text/javascript"> <!-- window.onload = function() { if(window.opener) { document.form01.text01.value = window.opener.document.form00.text00.value; } } function Set() { window.opener.document.form00.text00.value = document.form01.text01.value; window.close(); } //--> </script> </head> <body> <form action="index.php" method="post" name="form01" id="form01"> <input type="text" name="text01" /> <input type="button" onclick="Set()" value="値をセット" /> <input type="submit" value="再読込" /> </form> </body> 以上、よろしくお願いします。

  • 親windowに戻る際に・・・

    過去に似たような質問があるのですが、解決出来ませんでしたので質問させて頂きます。今作成中のHPは、親windowが上下の2つのフレームに分かれています。その下のフレーム内から別windowとしてリンクを作成しています。その時に別windowとして開いた子windowからさらに、form actionを利用して元の親windowに表示を戻したいのです。 ==子windowのスクリプト一部記述== <script type='text/javascript'> function jump(){ window.opener.location.href='AAA.cgi' window.close();} </script> ==子windowのform内一部記述== <input type='submit' name='submit' value='戻る' onclick='jump()'> このような感じの記述で取り合えず子windowは閉じて元の親windowにAAA.cgiのページが表示されたのですが、フレームの下の部分に表示します。これを、target="_top"のような感じで1つのフレームの状態に戻して表示したいのですが、何か良い方法はありますでしょうか??お願い致します。M(v_v)M

  • 親ウィンドウに値が戻らない

    親ウィンドウから、子ウィンドウを開き、ラジオボタンで、選択された部分のコードを親ウィンドウにセットしたいのですが、決定ボタンを押しても、値が戻りません。JavaScript部分で、親ウィンドウの項目に値を代入 しているつもりなのですが・・・・。 <?php $tokum = ""; /* 得意先マスターの値をもらう配列 */ /* 初期画面の表示 */ $sql = "select * from tokump00 order by tatkcd asc limit 0,15"; $result = mysql_query($sql,$con); $num = mysql_num_rows($result); ?> <script type="text/javascript"> <!-- function ReturnCode() { for($i=0;$i<15;$i++) if(document.gamen.code.checked) window.opener.document.syoukai.tkcd.value=document.gamen.code.value; } --> </script> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>得意先コード検索</title> </head> <body bgcolor="#FFEEFF"> <form name="gamen" action="codekensaku.php" method="post"> <input type="button" value="決定" onClick="ReturnCode()"><br><br> <table border="1"> <tr> <th>チェック</th> <th>コード</th> </tr> <?php for($i=1;$i<16;$i++) { $tokum = mysql_fetch_array($result); ?> <tr> <td><input type="radio" name="code" value="<?php echo($tokum[tatkcd]); ?>"> <td><?php echo($tokum[tatkcd]); ?></td> </tr> <?php } ?> </table> </form> </body> </html>

  • CGIのプログラム設置でSSIを使わずに、JavaScriptで直接CGIを呼び出す

    SSIが使えないサーバーで、JavaScriptを使って、直接CGIを呼び出して、表示させるCGIの設置をしています。 CGIスクリプト配布先では、表示した箇所に下記タグを記載するようにと説明があります。 ----------------------------------------------- <html> <body> <script language="JavaScript" src="○○.cgi" > </script> </body> </html> ----------------------------------------------- 真っ白いままで表示されなく困っています。 ちなみに直接CGIにアクセスすると、崩れた表示で表示されますので、CGI設置は問題ないはずです。 (CGIのパーミッション755にしてあります) 質問がいくつかあるのですが・・・ ホームページ作成ソフトで作っていますので、<head>~</head>内に下記メタタグが自動挿入されていますが、何か関係があるのでしょうか? <meta http-equiv="content-script-type" content="text/javascript" /> language属性は HTML4.01に採用されなかったため、HTML4.01 に従う場合は language 属性ではなく、type属性を使用するという記載を検索で見つけましたが、type属性に変更すればよいのでしょうか? type属性に変更のタグはどうように記載すればよいでしょうか? JavaScriptはあまり詳しくないので、とんちんかんな質問だったらすみません。 どうぞよろしくお願いします。 ----------------------------------- 配布先CGI:http://www.nmt.ne.jp/~mamiko/scripts/index.html