clearInterval() n'est pas l'arrêt de setInterval() - Extension de Firefox Développement
Je suis en train de travailler sur une modification de falsifier les données qui va me permettre d'envoyer la requête HTTP/réponses qu'il observe à un serveur. Jusqu'à présent, cette fonctionnalité a été mise en œuvre correctement. La prochaine étape est d'automatiser ce processus, et je souhaite utiliser une toolbarmenu bouton de type "case à cocher" pour basculer cette fonctionnalité sur et en dehors.
Pour l'instant j'ai ce bout de code dans le .XUL:
<toolbarbutton id="tamper.autosend" label="&tamper.toolbar.autosend;" type="checkbox" oncommand="oTamper.toggleTimer();"/>
Et cette fonction dans le principal moteur de mon poste:
toggleTimer : function() {
var checked = document.getElementById('tamper.autosend').checked;
var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage(checked);
if (checked) {
var interval = window.setInterval(function(thisObj) { thisObj.sendResults(true); }, 1000, this);
}
else {
window.clearInterval(interval);
}
}
À l'aide de la consoleService je vois que la valeur de "vérifié" est tout à fait correct. Je crois que le problème vient de la façon dont je suis l'appel de la fonction clearInterval, mais je ne suis pas exactement sûr de savoir comment y remédier.
Toute aide est grandement appréciée!
OriginalL'auteur Kotsu | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
Vous avez défini l'intervalle à l'intérieur si vous essayez de déclarer votre variable sur le début
accepter de répondre alors 🙂
Il est bon d'éviter globals chaque fois que possible. Stocker dans oTamper.l'intervalle de la place.
OriginalL'auteur Senad Meškin
Votre de faire le mal, à chaque fois que vous souhaitez définir l'intervalle, vous devez effacer d'abord
OriginalL'auteur richardd
Vous voulez enregistrer la
interval
dans une variable locale; la valeur est perdue après les retours de fonction, la prochaine fois que vous essayez d'clearInterval
d'une variable non définie. Stocker l'intervalle c'est à dire une variable globale à la place:OriginalL'auteur reko_t
Bien sûr, parce que
interval
est définie comme une variable privée. Il est défini dans latoggleTimer
fonction et est détruite lorsque la fonction se termine.Utilisation
interval = window.setInterval()
au lieu devar interval = window.setInterval()
pour définir une variable globale est accessible plus tard pourclearInterval
.Ci-dessous sont quelques exemples de la variable JavaScript portée.
var
est utilisé pour définir une variable dans la actuel portée. Laissantvar
toujours crée ou modifie une variable locale.OriginalL'auteur Midas