2010-12-15 311 views
0
var now = new Date(); 
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 1, 20, 00, 0) - now; 

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(startTime); 
    document.write("<br>page [email protected]</br>") 
    document.write(endTime); 
    document.write("<br>time taken</br>") 
    document.write(timeTaken); 

    myWin.close() 
} 

function beginSequence() { 
    openAPage(); 
    setInterval(openAPage, 5000); 
} 

setTimeout(beginSequence, millisTill10); 

c'est mon code js .. Je suis openin une page web avec setTimeout comme vous le voyez .. mais après je veux mettre un interne par exemple, je vais appeler la fonction openAPage chaque 1 minute après l'instruction setTimeout .. comment vais-je faire? quelqu'un peut-il réparer mon code?mettre un setInterval lorsqu'une fonction appelée

+1

Si vous souhaitez définir un autre délai d'attente ... vous écrivez un autre appel setTimeout dans votre fonction? –

+0

Pourquoi utilisez-vous 'var millisTill10 = new Date (now.getFullYear(), maintenant.getMonth(), now.getDate(), 1, 20, 00, 0) - maintenant;'? Essayez d'utiliser 'setTimeout (beginSequence, 5000);' et si cela résout votre problème, le code 'millisTill10' pose problème. – Fred

+0

Je ne sais pas quel temps est chez vous, mais 'millisTill10' est de 16 minutes pour moi ... c'est peut-être pour ça que ça ne marche pas? –

Répondre

2
setTimeout(startOpeningPages, millisTill10); 

function startOpeningPages() { 
    openAPage(); 
    setInterval(openAPage, 60 * 1000); 
} 
+0

DOESNT TRAVAIL: (... –

+0

@ramazan: il devrait .. quelles erreurs obtenez-vous? – sje397

+0

@ramazan murat Essayez mon exemple –

0

Je me rends compte qu'il y a déjà beaucoup de bonnes réponses. Je posterai de toute façon pour les coups de pied :)

function() { 
    var win = window.open("about:blank") 
    var doc = win.document 
    doc.write("Hello") 
    setTimeout(arguments.callee, 60*1000) 
}() 

Ce sont deux des choses que je préfère que vous pouvez faire en Javascript: auto-appeler une fonction (la terminaison () après la déclaration de fonction, et d'être en mesure d'accéder la fonction anonyme à partir de la fonction par arguments.callee.

Cela vaut mieux que setInterval en ce que le premier processus doit être achevé puis 60 plus tard, le deuxième processus commence. Avec setInterval, le processus ne cesse de commencer chaque 60s 60s est un grand intervalle où cela n'aurait pas d'importance, mais ce matte habituellement rs beaucoup plus avec de plus petits temps (dans les gammes ms). Parce qu'il pourrait finir par mettre en mémoire tampon la deuxième fonction à exécuter avant la fin de la première.

+2

Notez que 'arguments.callee' va lancer une erreur dans le mode strict d'ECMAScript 5: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ Vous devriez commencer à ne pas l'utiliser plus ... désolé :) –

+0

Aww ... me rend un peu triste. Mais bon lien. De bonnes choses à savoir. Merci! – Aishwar