J'ai un site e-commerce avec un temps de panier maximum de 20 minutes. J'ai écrit un simple compteur de JS pour afficher timeleft comme ceci:jQuery Mobile Et un compteur js exécuté deux fois
function basketCounter() {
var minutes = Math.floor(count/60);
var sec = count - minutes * 60;
if (sec < 10) {
sec = '0' + sec;
}
console.log("hello");
$(".temps_restant").html("reste: " + minutes + " : " + sec);
$("#tunnel_panier_temps").html("" + minutes);
if (count == 0) {
window.location = '{{serverRequestUri}}flush_panier/1/';
}
count--;
}
Et dans le corps:
var count = {{panierTmp.lifetime - now}};
$(document).bind('pageinit', function() {
$("img.lazy").unveil();
if (count > 0) {
setInterval('basketCounter()', 1000);
}
});
Il fonctionne très bien quand je navigue sur le site sans ajax. Mais quand j'essaie de naviguer dans ajax dans JQM, le compteur est ré-exécuter à chaque fois et accélérer, 2sec par 2sec, et si je reviens deux fois, il sera 3sec de 3 sec ..
Je peux « t trouver une solution ..
Pourquoi la page init est-elle incorrecte? Y a-t-il un événement qui ne se déclenchera pas chaque fois que j'y retournerai et reviendrai sur ma vue mais seulement une fois? –
Je pense que je fais quelque chose de mal, et c'est l'erreur principale de ma page init, mon appel ajax duplique le contenu de ma page –
@ user2695901 'Déclenchée sur la page en cours d'initialisation, après l'initialisation. Nous vous recommandons de vous lier à cet événement au lieu de DOM ready() car cela fonctionnera, que la page soit chargée directement ou que le contenu soit tiré dans une autre page dans le cadre du système de navigation Ajax ». En bref, il se déclenchera toujours lors du chargement d'une page contenant cet événement. checkout votre chargement de la page, vous devriez seulement récupérer le contenu pas toute la page. mais encore, utilisez la vérification de la variable d'intervalle pour vous assurer que le nombre est unique. Vous devez utiliser une date pour vérifier au lieu d'un compteur – TecHunter