2017-10-20 29 views
0

Mon minuteur démarre le chargement de la fenêtre. Lorsque le visiteur ferme la page de mon site Web, la minuterie s'arrête. Si le visiteur ouvre la même page (avec minuterie) au bout de 10 heures, la minuterie commence à partir de la même heure où elle s'était arrêtée plus tôt.Continuer Minuterie de compte à rebours après visiteur quitte le site Web

Je veux créer une minuterie de 3 heures cette page commence lorsque du site est chargé et que continue de tourner en arrière-plan même si le visiteur ne visitant pas actuellement ma page de site Web.

Je souhaite rediriger le visiteur vers une autre page "amazon.com" après que ce délai de 3 heures a expiré, s'il visite le site après 3 heures.

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

D'abord, cela ressemble à un horrible idée et si vous deviez faire cela, je boycotterais activement votre site Web ennuyeux. Deuxièmement, vous réalisez que JavaScript s'exécute dans une page, n'est-ce pas? Comment proposez-vous d'exécuter du code qui n'est pas là (c'est-à-dire lorsque l'utilisateur ferme la page, il n'y a pas de JavaScript)? – Paul

+2

Ces deux exigences sont incompatibles: _ "même si le visiteur ne visite pas actuellement mon site" _ et _ "Je souhaite rediriger le visiteur vers une autre page" _. – msanford

+1

Je pense que peut-être l'intention est de rediriger vers Amazon une fois le site visité * après * la fenêtre initiale de 3 heures – djfdev

Répondre

0

Je pense que vous pouvez simplement stocker l'heure de début à localStorage, et le comparer à l'heure actuelle chaque fois que la page est chargée:

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