0

重複の可能性:
ウィンドウがフォーカスされていないときに停止する Javascript カウントダウン タイマー

私はこの問題の解決策を探していました。

私がやりたいことはこれです:訪問者がウェブサイトの特定のリンクをクリックすると、別のページにリダイレクトされます。

この別のページでは、彼は 20 秒間滞在する必要があります。しかし、私は countdown を適用したいので、彼はタイマーが 20 秒から 0 秒に下がっているのを見ます。

タイマーが 0 秒になったら、php スクリプトを実行します。(それはその場にあります)

さて、私が望んでいるのは、訪問者がこのページにいる限り(このページにフォーカスがある場合)、タイマーが刻み続けることです。それ以外の場合は、訪問者がページに戻るまでタイマーが停止します

解決策を見つけるためにたくさん検索しましたが、phpで実行できるかどうかさえわかりません。

少なくともどこを検索すればよいか教えていただけると助かります。

事前にどうもありがとう

4

4 に答える 4

0

PHP で行う必要があるのは、たとえばページが要求されたときなど、タイマーが開始された時刻を決定することです。ページがdownload.phpで、コードが次のようになっているとします。

session_start(); //this has to be before you echo any text out or send any headers
$_SESSION['minimum_time'] = time() + 20;

次に、ページが出力する HTML で、JavaScript カウントダウン タイマーを表示できます。シンプルでアプリケーションに適したものを検索する必要があります。

JS タイマーのカウントダウンも 20 秒間行います。ここで 1 秒余分に追加するか、念のため PHP 側から 1 秒差し引いてください。ただし、ネットワーク時間とページ レンダリングが原因で、JS タイマーが終了するまでに、ユーザーは常に開始時刻から 20 秒以上経過している可能性があります。

JS カウントダウンがユーザーをリダイレクトするか、新しいページへのリンクを提示した後、それを と呼びましょう。次のfile.phpようになります。

if (time() > $_SESSION['minimum_time']) {
  print "Thanks for waiting!";
}
于 2012-09-21T18:54:43.843 に答える
0

PHPでは実行できません。PHP はサーバー側の言語であるため、ページをリクエストすると、ページがコンパイルされて提供されます。

JavaScript が必要です。あなたがする必要があるのは、タスクをステップに分解することです。だからあなたはそれを知っています:

  1. 20 秒のカウントダウンがあるはずです
  2. そのカウントダウンの最後にスクリプトを実行する必要があります

したがって、最初のステップはsetTimeout()、JavaScript で関数を調べることです。次に、コールバック関数でリダイレクトするか、XMLHttpRequest (AJAX) 経由で別の URL を呼び出します。

于 2012-09-21T18:09:31.073 に答える
0

これでうまくいくと思います。このスクリプトの前に jQuery ライブラリを含めるだけで済みます。jQuery でスクリプトを作成することは、純粋な JavaScript よりもはるかに簡単です。個人的には、純粋な JavaScript を使用することはめったにありません。

于 2012-09-21T18:18:56.440 に答える
0

シェイディ - どうして?Web サイトは人間にとってインタラクティブであると想定されていませんか?

おそらくJavascriptでそれを行うことができますが、これはユーザー/顧客/クライアント/従業員を悩ませると感じています.

PS: PHP はサーバー上で動作するだけです。

于 2012-09-21T18:26:02.080 に答える