2010-12-15 90 views
31

par exemple je veux appeler une fonction js à 10.00.00.00 am comment puis-je faire?Appelez une fonction javascript à une heure spécifique

<script type="text/javascript"> 

var now = new Date(); 

var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 30, 0, 0) - now; 

setTimeout(function{openAPage(), setInterval(openAPage, 60*1000)}, millisTill10) 

function openAPage() { 

var startTime = new Date().getTime(); 
var myWin = window.open("http://google.com","_blank") 
var endTime = new Date().getTime(); 
var timeTaken = endTime-startTime; 


document.write("<br>button [email protected]</br>") 
document.write(new Date(startTime)); 
document.write("<br>page [email protected]</br>") 
document.write(new Date(endTime)); 
document.write("<br>time taken</br>") 
document.write(timeTaken); 

myWin.close() 

} 

</script> 

-je attendre de ce code à 00h30, il ouvrira Google, puis toutes les 1 minute plus tard, il le fera à nouveau? Qu'est-ce qui ne va pas avec ce code?

Répondre

64

Vous aurez besoin de setTimeout pour régler un temporisateur et Date pour calculer combien de temps le temporisateur doit aller jusqu'à ce qu'il se déclenche.

var now = new Date(); 
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now; 
if (millisTill10 < 0) { 
    millisTill10 += 86400000; // it's after 10am, try 10am tomorrow. 
} 
setTimeout(function(){alert("It's 10am!")}, millisTill10); 
+0

travail grâce .. une chose que je veux appeler cette fonction toutes les 5 minutes plus tard de 10 h comment le faire? –

+2

Vous pouvez utiliser ['setInterval'] (https://developer.mozilla.org/en/DOM/window.setInterval). 'interval = setInterval (func, 5 * 60 * 1000);' alors vous pouvez 'clearInterval (interval)' quand vous ne voulez pas continuer. –

+0

intervalle est valide à partir de 10 heures ou valide lorsque j'ouvre la page ?? –

0

En supposant que le code se trouve sur une page Web qui sera chargée avant 10h00 et sera vu encore à 10h00, vous pouvez utiliser setTimeout() pour mettre en place un événement chronométré. la fonction prend une instruction JS à exécuter, et le nombre de millisecondes avant qu'elle ne soit exécutée. Vous pouvez trouver cette deuxième partie assez facilement avec les fonctions de date intégrées.

+0

pouvez-vous envoyer un exemple de code pls? –

9

Ma solution pour exécuter un script à un moment précis, btw aucune vérification d'erreur pour le délai d'attente négatif.

//year, month 0-11, date, hour, min (can add ,sec,msec) 
var eta_ms = new Date(2015, 0, 21, 17, 0).getTime() - Date.now(); 
var timeout = setTimeout(function(){}, eta_ms); 
2

Eh bien, vous pouvez utiliser package noeud ontime