続・CGIの処理が終わったらサブウインドウを閉じたい

[上に] [前に] [次に]
ゴリベー4.0 1999/12/09(木) 19:16:37
../199911/99110406.htm
で話題になってたんですが、さっぱり理解ができません。
具体的なソースってないですか?

P初心者 1999/12/10(金) 10:25:24
具体的なソースは私はありませんが、ポイントは2つ!

1、CGI起動時に onSubmitハンドラで処理中のメッセージをだします。
2、CGIがデータ処理を完了したらJavaScriptの window.close()をCGIから標準出力します。

ゴリベー4.0 1999/12/10(金) 13:21:04
P初心者さん、ポイントありがとう。
でもわかんないです・・・

まず、1番のonSubmitでは何をさせればいいんでしょう。

P初心者 1999/12/10(金) 14:11:37
要は、サーバー側で時間のかかる処理をCGIがするわけです。
その間、その処理の要求を出した人にブラウザで「処理中ですよ!」
って、メッセージでCGI実行中の認識をしてもらうんです。

たとえば、こんなかんじ〜

<SCRIPT>
function ShoriMsg(){
    document.write("<H2>CGIを処理中ですよ!</H2>");
    return true;
}
</SCRIPT>
<FORM METHOD=POST ACTION="wwwlng.cgi" NAME="TSTFORM" onSubmit="return ShoriMsg()">
<INPUT TYPE="submit" VALUE="長い処理のCGI">
</FORM>

ゴリベー4.0 1999/12/10(金) 16:41:19
う〜ん、だめっす。わかんないっす。
perlでサブウインドウを消す方法を教えてください。
JavaScriptのwindow.close()を標準出力っての、やったんだけどできないんですよぅ・・・

一応何がやりたいか書いておきますね。
■ 親ウインドウから、入力フォーム用のサブウインドウを開く。
■ そのサブウインドウからsubmit。
■ サブウインドウはもういらないので閉じる。
■ 親ウインドウを更新。
って感じなんですが、どうでしょう。

P初心者 1999/12/10(金) 19:04:50
だったら、
サブウインドウからsubmitしてCGIを起動したときに、TARGETを親ウインドウにしときます。
そして、このサブウィンドウを同時に閉じます。(JavaScriptのwindow.close()で)
そうすれば、CGIで普通にHTMLを標準出力すればすべて丸く収まるわけです。

尚、TARGETは<FORM>タグ内に記述します!

P初心者 1999/12/10(金) 20:51:19
今、自宅なのテスト環境ないんですが、
サブウインドウのScriptはこんな感じです。

<SCRIPT>
function ShoriMsg(){
    window.close();
    return true;
}
</SCRIPT>
<FORM METHOD=POST ACTION="wwwlng.cgi" TARGET="親のウィンド名" onSubmit="return ShoriMsg()">
<INPUT TYPE="submit" VALUE="長い処理のCGI">
</FORM>

これが駄目だったらタイマーかける。

<SCRIPT>
function WClose(){
    window.close();
}
function ShoriMsg(){
    setTimeout(WClose(),1000);
    return true;
}
</SCRIPT>
<FORM METHOD=POST ACTION="wwwlng.cgi" TARGET="親のウィンド名" onSubmit="return ShoriMsg()">
<INPUT TYPE="submit" VALUE="長い処理のCGI">
</FORM>

[上に] [前に] [次に]