0

試合時間までタイマーを表示する必要があるゲームサイトがあります。タイマーが制限に達したら、ゲームをロードする必要があります。

このために、jquery countdownを使用しました。一般的には正常に動作します。

私の問題は、ユーザーがシステム時間 (ローカル時間) を変更した場合にタイマーが実行されている間に、残りの時間制限が変更され、ゲームが開始されることです。

カウントダウン タイマーが現地時間にならないようにするにはどうすればよいですか? 問題を解決するのを手伝ってください。

私のコード、

$('#gamewindow').countdown({
        until   : 100,
        layout:'{mn} : {s<}{snn} {s>}',
        onExpiry: function () { 
                $('#gamewindow').load('game.php');         
        },
    });

}); 

<div id="gamewindow"></div>
4

2 に答える 2

1

プレーンな Javascript ( client-time、つまりクライアントのコンピューターの時刻を返す) を介してタイマーを初期化する代わりに、 server-time、つまりサーバーの時刻に依存する必要があります。これにより、すべてのプレーヤーのタイミングが標準化されます。

そのため、カウントダウン ページにアクセスすると、Javascript カウンターがサーバーの時間で初期化されます。これを行うには、AJAX またはいくつかのハック型 PHP を使用できます。このタスクでは、JS がサーバーから何かを必要とするのは起動時だけです。その後、「カウントダウン」効果は JS によって管理されます。もちろん、これは完全に同期されませんが、そのエラーはかなり許されます. ユーザーが別のローカル タイムゾーン設定で更新した場合でも、JS はサーバー時間から再初期化されるだけです。問題ありません。

于 2013-08-26T10:31:51.803 に答える
0

ユーザーがシステム時刻を変更するのを防ぐことはできないため、ソリューションはサーバー側でなければなりません。

で、 に到達しgame.phpたかどうかを確認しmatch_start_timeます。到達していない場合は、待機中のページにリダイレクトします (カウントダウン タイマーが再度表示されます)。

于 2013-08-26T10:34:07.870 に答える