2009-08-02 58 views
10

午後3時35分など特定の時間にリロードしたいウェブサイトがあります。それ、どうやったら出来るの?特定の時間にWebページを自動的にリロードする方法はありますか?

+0

もう少しコンテキストが「リロード」されていますか、どのように/どこ/どのようなWebサーバーですか? – nos

+4

これ以上の情報が必要です。実際の質問から始まります。 –

+3

私はそれをもっと明確にするために質問を書き直しました。うまくいけば私はエドウィンの意図が正しいと思っています。 –

答えて

36

次のJavaScriptスニペットを使用すると、特定の時点でリフレッシュすることができます:

function refreshAt(hours, minutes, seconds) { 
    var now = new Date(); 
    var then = new Date(); 

    if(now.getHours() > hours || 
     (now.getHours() == hours && now.getMinutes() > minutes) || 
     now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) { 
     then.setDate(now.getDate() + 1); 
    } 
    then.setHours(hours); 
    then.setMinutes(minutes); 
    then.setSeconds(seconds); 

    var timeout = (then.getTime() - now.getTime()); 
    setTimeout(function() { window.location.reload(true); }, timeout); 
} 

次にあなたがrefreshAt()関数を呼び出すスクリプトタグを追加することができます。

refreshAt(15,35,0); //Will refresh the page at 3:35pm 
+0

あなたはこのような分と秒を持つ例を手伝ってもらえますか? 'refreshAt(35,0);' – davidb

1

基本的には、ページがアクセスされたときに、アクセス時間と、ページをリロードする時間の間残っているどのくらいの時間を計算し、使用しているメタリフレッシュヘッダに時間が残っています。明らかに、これはCGIスクリプトやWebアプリケーション、あるいはSSI(サーバーサイドインクルード)で行う必要があります。静的なHTMLファイルがあれば動作しません。

また、Javascriptを使用することもできますが、クライアントでJavascriptが無効になっていると動作しません。

+1

** @ David:**サーバーサイドでの問題は、タイムゾーンが異なり、 tは常にクライアントのtzに関する情報を持っています。 –

+0

それは必要ではないかもしれません。営業担当者は、クライアントのタイムゾーンまたはサーバーのタイムゾーンで、指定した時間にページをリロードするかどうかについては言いませんでした。 –

5
<META HTTP-EQUIV="Refresh" CONTENT="5"> 

これは、ページを5秒ごとにリロードするよう強制します。正しい間隔を計算してコンテンツタグに追加してください

+4

** @ Sorantis:**サーバーサイドでの問題は、タイムゾーンが異なり、クライアントのtzに関する情報が常にあるとは限りません。 –

+0

あなたは正しいです。私は、Javascriptが最適なソリューションだと思います。 – Sorantis

+2

質問は特定の時間についてであり、時間間隔ではありません – random

0

基本的には、ページを何分か更新することができるJavaScriptコードが多数ありますが、時間を更新するように編集することもできます。このような:

//enter refresh time in "minutes:seconds" Minutes: 0 to Whatever 
//Seconds should range from 0 to 59 
var limit = "0:30"; 

if (document.images) { 
    var parselimit = limit.split(":"); 
    parselimit = parselimit[0] * 60 + parselimit[1] * 1; 
} 
var beginrefresh = function() { 
    if (!document.images) return if (parselimit == 1) window.location.reload() 
    else { 
     parselimit -= 1; 
     curmin = Math.floor(parselimit/60); 
     cursec = parselimit % 60; 
     if (curmin != 0) curtime = curmin + " minutes and " + cursec + " seconds left until page refresh!"; 
     else curtime = cursec + " seconds left until page refresh!"; 
     window.status = curtime; 
     setTimeout("beginrefresh()", 1000); 
    } 
} 

window.onload = beginrefresh; 

(今ちょうどあなたがそれをリフレッシュしたい分と秒を計算し、例えばなどの正午、毎日それが今正午た場合:

var limit = "1440:00"; 

今、あなたは除いて、このコードを使用することができますそのほとんどはサーバ時間では動作しません。あなたが私たちに提供した情報で、私たちは本当に何もできません。あなたの質問を編集して、サーバの時間などでタイムアウトさせたい場合は教えてください。

1

私はこのページを似たような質問で見つけ、それをhacいくつかの人にとっては、より具体的な回答を得ることができます。このプロジェクトでは、グローバルな関心のあるライブイベントが始まると、ページをリフレッシュして、ユーザーのページに埋め込まれたプレーヤーをアクティブにしました(狭いユースケース - 私は知っています。それ)。

上記の回答の1つの課題は、特定の日時にページが更新されたことを確認したいため、私たちにとって問題だったタイムゾーンの変換を処理する方法でした。これを行うために、私はターゲット日付と今日の日付のUTCバージョンを取得し、それらをGMTに変換してからAndrewのタイムアウト関数をその2つの差に設定しました。


var target = new Date("January 28, 2011 13:25:00"); 
timeOffset = target.getTimezoneOffset() * 60000; 
targetTime = target.getTime(); 
targetUTC = targetTime + timeOffset; 

var today = new Date(); 
todayTime = today.getTime(); 
todayUTC = todayTime + timeOffset; 

refreshTime = (targetUTC - todayUTC); 
if (refreshTime > 1) { 
    setTimeout(function() { window.location.reload(true); }, refreshTime); 
} 
0

これを使用して、20秒ごとにページを更新します。

<META HTTP-EQUIV="refresh" CONTENT="20">