1

私に似たケースを検索しましたが、関連する投稿はほとんど見つかりませんでしたが、私の質問に答えることができませんでした.

私が実行している cgi スクリプトは、いくつかの数値を処理しており、最後に html ファイルを吐き出しています。この html ファイルの場所を制御し、html フォームの送信が成功したときに表示される一時的な Web サイトに URL を提供しています。

出力 html は一瞬のうちに作成されます。つまり、すぐには作成されません。

一時的な CGI ページ内で、html が完全に記述されているかどうかを確認してから、自動的にリダイレクトする方法はありますか? ページの準備ができていない場合は、ユーザーが現在のページにとどまるようにします。

現時点では、一時的な cgi ページに「チェック」ボタンと「終了」ボタンを表示して、ステータスを確認/終了することができます。「チェック」をクリックしてウェブサイトの準備ができたら、そこにリダイレクトします。また、アクセスできる html ファイルへの URL を表示しますが、すぐにたどるとページの断片だけが表示されます。

ユーザーが何もクリックする必要がないように、更新/リダイレクトを自動にしたいと思います。

「既知の小さな画像を読み込もうとすると、読み込みが完了したかどうかを検出する」というアイデアを他の場所で見ました。

<img src="http://www.example.com/image.jpg"
  onload="window.location='http://www.example.com';"
  onerror="window.location='#';">

私はそれが好きですが、完璧ではありません。私の一時的な cgi ページは、フォームを送信しないと結果の html にさらに URL を渡しません (フォームが使用されていないため、ここでは GET も POST もありません)。繰り返しますが、リダイレクトをできるだけ自動にしたいと思います。

要約すると、CGI.pmで生成されたページ内から、外部のhtmlページにリダイレクトする準備ができているかどうかを確認するにはどうすればよいですか? DWR ( http://directwebremoting.org ) が唯一の解決策ですか?

いくつかの JavaScript ソリューションを喜んで受け入れます。

編集:

最初のフォームが送信された直後に結果ページへの書き込みを開始し、その場で追加を続けます。ページが最初から存在する (ただし完全ではない) ため、すでに提案されているように、404 以外の応答を確認する (そしてリダイレクトする) ことは、むしろ容易ではありません。

4

1 に答える 1

4

結果 HTML の書き込みを制御するので、CGI から生成されたページと静的な結果の両方が同じドメインにあると推測されます。「待機中」ページに、AJAX で結果ページを要求しようとする定期的に呼び出される関数を設定し.setInterval、非 404 応答を受信するとすぐwindow.locationに結果ページに設定します。また、視覚的なインジケーターや気を散らすものをユーザーに提供して、行き詰まったと思わないようにします。

結果ページを生成するときは、最初に何らかの一時ファイル名で保存し、完了したら最終的な名前に名前を変更して、完了する前に意図したアドレスに表示されないようにする必要があります。

于 2012-07-02T12:38:49.010 に答える