6

1分ごとに実行されるjavascript関数があります。

setInterval(function(){

  //first, check time, if it is 9 AM, reload the page
   var now = new Date();
   if (now.getHours() == 9 {
      window.refresh();
   }

  //do other stuff

},60000);

問題は、リロードを1日1回だけにしたいということです。この関数は 1 分ごとに実行されるため、次に起動したときに、午前 9 時から午前 10 時の間であれば、ページが再度リロードされます。リロードを 1 回だけ行うにはどうすればよいですか?

おそらく、1 時間ごとに起動する別の間隔関数を作成して、リロードする必要があるかどうかを確認することで、それを行うことができます。しかし、毎分実行される上記の関数が既にあるので、そこから実行できますか?

1時間ごとにチェックする別の関数を作成することになった場合。これら 2 つの関数がまったく同時に起動するとどうなりますか?

4

3 に答える 3

9

最後の更新の日付を保存し、差を計算します。6 時間以内であれば (安全のため)、更新は必要ありません。

var lastRefresh = new Date(); // If the user just loaded the page you don't want to refresh either

setInterval(function(){

  //first, check time, if it is 9 AM, reload the page
   var now = new Date();
   if (now.getHours() == 9 && new Date() - lastRefresh > 1000 * 60 * 60 * 6) { // If it is between 9 and ten AND the last refresh was longer ago than 6 hours refresh the page.
      location.reload();
   }

  //do other stuff

},60000);

これがあなたの意図したものであることを願っています。これはテストされていないことに注意してください。

于 2013-02-22T20:00:47.213 に答える
1

これをより適切な方法で行うためのより複雑なソリューションに入ることなく、 getDay() を使用して Cookie に保存し、このメソッドが最後に呼び出されたのが同じ日であったかどうかを確認できるようにすることができます。翌日の午前 9 時と別の日の午前 9 時になります。

于 2013-02-22T20:01:08.647 に答える
-4

C#です。アルゴリズムは次のようになります。

  1. N時間目に実行されるC#でタイマーを作成します(例:午前10時、午後1時など)。
  2. 時刻がX時間かどうか(この場合は午前9時)を確認します。
  3. そうである場合は、ページを更新します。
于 2013-02-22T20:29:19.973 に答える