FORMタグの実行順序

[上に] [前に] [次に]
KAPPA [E-Mail] [HomePage] 2000/03/16(木) 12:24:58
FORMタグで、ACTION,TARGET,onSubmit を設定した場合、
優先実行順序というものはあるのでしょうか?
例えば、
action='xxx.cgi' target='parent' onSubmit='window.close();'
とした場合に、普通はwindow.close();を実行してから
xxx.cgiを呼び出してparentに結果を返す、となるとおもうのですが・・・

実は、既存のBBSを改造し、上記のような処理を行っているのですが、
WIN版のNN4.xxでは正常の動作しないとの報告がありまして、
こちらに相談しに来ました。

どんな小さな事でも結構です。
心当たりのある方はRESをお願いいたします。

にゃあ 2000/03/17(金) 06:57:36
見学してきました〜

えぇっと、解決策…になればいいのですが。
中身を見たところ、問題に成っているのは新規投稿ウィンドウですよね?

petitはちょっと改造しにくいのですが…

送信をするとき、一度別のCGIに飛ばして
そこでPETITのデータを書きこみ、
そのCGIの結果としてウィンドウを閉じたらどうでしょうか?
(CGI上でJavaScriptを書き出す。)
こんなふうにワンクッション置いてやれば上手くいくと思いますよ〜

KAPPA [E-Mail] 2000/03/18(土) 21:33:01
これだと、データの書き込みとウィンドウのクローズという一連の処理は解決できそうですね。
でも、元のウィンドウの再表示がされないですよね?

で、考えたんですが...
ログを表示する際に、投稿ウィンドウがあるかどうかチェックできれば
有ればクローズ、無ければそのまま、という処理が可能になると思うのですが。
window.open()関数で一度オープンしてみれば出来そうですが、問題は無かったときに一瞬ウィンドウが開いてしまうこと。

一番いいのは onSubmit の処理終了後に確実にACTIONを呼び出せることなんですが・・・

にゃあ 2000/03/21(火) 05:18:30
お返事遅れました(ぺこっ)
いやあ、久しぶりに兄弟が帰ってきまして… っと

> これだと、データの書き込みとウィンドウのクローズという
> 一連の処理は解決できそうですね。
> でも、元のウィンドウの再表示がされないですよね?

これもJavaScriptでカバーしてしまいましょう(笑)

書きこむデータを、CGIに渡す。
ファイルに書きこむ。
画面上にJavaScriptで親ウィンドウのリロードを書きこむ。
画面上にJavaScriptで子ウィンドウの消去を書きこむ。

という流れで、いかがでしょうか?
---------------------------------------------------
で、ウィンドウがあるかどうかのチェックですが、
<INPUT TYPE=HIDDEN>を使ってやれば、いいと思います。

表示部分のところに、<INPUT TYPE=HIDDEN>を埋めこんで
・子ウィンドウが開いたときに、そこのデータに書きこむ。
・子ウィンドウが閉じたときに、そこのデータを消す。
・子ウィンドウを意図的に閉じたいときには、そこをチェックして、子ウィンドウを閉じれるかどうか判断する。

かな?かな?

KAPPA [E-Mail] 2000/03/21(火) 18:30:47
[[解決]]
なるほど!
親ウィンドウのリロードまで頭が回りませんでした(^^;

ちょっと時間かかるかもしれませんが、チャレンジしてみたいと思います。
有り難うございましたm(_ _)m

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