2017-10-20 4 views
0

タイマーはウィンドウの読み込み時に開始されます。訪問者が私のウェブサイトのページを閉じると、タイマーは一時停止する。訪問者が10時間後に同じページ(タイマー付き)を開くと、タイマーは以前に一時停止したのと同じ時刻から開始します。カウントダウンを続ける訪問者がウェブサイトから離脱した後のタイマー

私は開始は、ウェブサイトのページがにロードされた3時間のタイマーを作成したいとそのは、バックグラウンドの訪問者は、現在、私のウェブサイトのページを訪問していない場合でもに刻み続けています。

この3時間タイマーの有効期限が切れた後、3時間後にウェブサイトにアクセスした場合、訪問者を別のページ、「amazon.com」にリダイレクトしたいと考えています。

function countdown() { 
 
    time = parseInt(localStorage.time); 
 

 
    if(isNaN(time) || time > (38 * 60)) { 
 
    //alert("An error occured: time left variable is corrupted, resetting timer"); 
 
    localStorage.time = 38 * 60; 
 
    countdown(); 
 
    return null; 
 
    } 
 

 
    if(time <= 0) { 
 
    alert("Your Timer Has Run Out! We Still Got 2 Discount Copies Left, Hurry Up!"); 
 
    return null; 
 
    } 
 

 
    var timers = document.getElementsByClassName('timeleft'); 
 

 
    Array.prototype.forEach.call(timers, function(timer) { 
 
    timer.innerText = formatTime(time); 
 
    }) 
 

 
    time--; 
 
    localStorage.time = time; 
 
    setTimeout('countdown()', 1000); 
 
} 
 

 
function formatTime(time) { 
 
    minutes = Math.floor(time/60); 
 
    seconds = time - minutes * 60; 
 

 
    if(String(seconds).length == 1) { 
 
    return String(minutes) + ":0" + String(seconds); 
 
    } 
 

 
    return String(minutes) + ":" + String(seconds); 
 
} 
 

 
window.onload = function() { 
 
    countdown(); 
 
}
<font size="+34"><div class="timeleft"></div></font>

+2

まず、これはのように聞こえますあなたがこれをしなければならない場合、私はあなたの迷惑なウェブサイトを積極的にボイコットするでしょう。次に、JavaScriptがページ内で実行されることを認識していますか?そこにないコードを実行する方法を提案します(つまり、ユーザーがページを閉じるときにJavaScriptはありません)。 – Paul

+2

これらの2つの要件は互換性がありません:_ "現在、私のWebサイトにアクセスしていなくても_ _ _ _"訪問者を別のページにリダイレクトしたい "_。 – msanford

+1

最初の3時間のウィンドウの後に*サイトが訪問されたら* Amazonのリダイレクトを意図していると思われるかもしれません。 – djfdev

答えて

0

私はあなただけlocalStorageで開始時刻を格納し、ページがロードされるたびに、現在の時刻と比較することができ思う:

function startOrRedirect() { 
    const startTime = localStorage.getItem('startTime') 

    if (startTime) { 
    const date1 = new Date(parseInt(startTime)) 
    const date2 = new Date() 
    const hours = Math.abs(date1 - date2)/36e5; 

    if (hours >= 3) { 
     redirect() 
    } 
    } else { 
    localStorage.setItem('startTime', Date.now) 
    setTimeout(redirect, 1000 * 60 * 60) 
    } 
} 

function redirect() { 
    window.location = 'https://amazon.com' 
} 

window.onload = startOrRedirect 
関連する問題