erreur jQuery Animation = tentative d’exécution du script comstack-and-go sur une étendue effacée

J’espère que quelqu’un peut aider avec cela. J’ai une erreur étrange à venir dans Firebug sur ma page.

J’utilise le code:

$(function () { var element = $("#finger"); (function(){ element .animate({ marginLeft: 130 }, 1000) .animate({ marginLeft: 100 }, 1000 , arguments.callee); }()); }); 

Cela fonctionne très bien pour animer mon “doigt”.

J’ai aussi cet autre code:

 $("SOME-OTHER-DIV").mousedown(function () { $("#finger").hide(); }); 

Cela fait que mon “doigt” se cache quand on clique dessus.

Maintenant, tout cela fonctionne bien … jusqu’au moment où je recharge la page par laquelle j’obtiens cette erreur

“tentative d’exécution d’un script comstack-and-go sur une étendue effacée”

Pourtant, l’animation fonctionne toujours et le mousedown fonctionne toujours.

Des idées ce qui se passe ici? Est-ce juste un bug dans Firefox? Merci d’avance Chris

———-mettre à jour———

Hmm, peut-être que ce n’est pas le “arguments.callee” qui cause le problème. J’ai changé le code en:

 $(function () { i = 0; while(i < 3){ $("#finger").animate({ marginLeft: 130 }, 1000).animate({ marginLeft: 100 }, 1000); i++; } }); 

Ce qui passe en boucle 3 fois (ok, pas infini, mais c’est juste pour exemple) et j’obtiens toujours l’erreur “tentative d’exécution d’un script de compilation-exécution sur une scope effacée” lors du rechargement de page dans Firebug: -S

Cela semble être un problème avec FF4. Voir ceci et cela . Comme le dit l’autre thread, essayez d’effacer le cache.

Essayez ce code et vérifiez si vous obtenez toujours l’erreur – démo

 $(function() { animateFinger(); }); $("#abc").mousedown(function() { $("#finger").toggle("display"); }); function animateFinger() { $("#finger").animate({ marginLeft: 130 }, 1000).animate({ marginLeft: 0 }, 1000, animateFinger); } 

Si cela ne fonctionne pas, essayez d’utiliser setInterval et d’appeler la méthode toutes les 2000 millisecondes – démo

 $(function() { animateFinger(); setInterval(animateFinger, 2000); // You can also try function(){setTimeout(animateFinger, 0)} as a callback method instead of setInterval }); $("#abc").mousedown(function() { $("#finger").toggle("display"); }); function animateFinger() { $("#finger").animate({ marginLeft: 130 }, 1000).animate({ marginLeft: 0 }, 1000); } 

Tout le meilleur dans vos affaires de pointage du doigt. 😉

Je pense que arguments.callee peut être la cause. Je pense que cela fait des trucs géniaux que tous les moteurs JS ne supportent pas pleinement.

C’est Firefox. Si vous désactivez le cache, l’erreur ne s’affichera probablement pas.

Dans environ: ensemble de configuration:

 network.http.use-cache = false