JavaScript Mac Firefox setInterval () Weirdness
-
24-09-2019 - |
Question
J'ai d'abord rencontré un problème avec safari, où l'intervalle de jeu se comporterait unpredicatbly lorsque le nom de la fonction n'a pas été enfermée dans des citations (et éventuellement il coutures avec des parenthèses ajoutées):
repeatInterval = setInterval("foo()", 50);
Après avoir changé mon code à lire de cette façon, il coutures qu'il ne soit pas exécuté du tout dans la version Mac de Firefox.
Je l'ai fait quelques tests en outre un assuré qu'il fonctionne tout à fait bien sous Linux et Windows versions (y compris les 3.0.10 et 3.6 sous Windows). La seule combinaison qui vomit ce problème est Firefox (3.6 dans ce cas) sous Mac OS X Snow Leopard.
Il dose ne fonctionnera pas du tout, sauf écrit dans le format suivant:
repeatInterval = setInterval(foo, 50);
Y at-il un sollution à ce problème qui fonctionnera dans tous les autres navigateurs et Firefox sur Mac, sans test pour le système d'exploitation et le navigateur dans le javascript et le piratage de travailler en conséquence?
La solution
Ne pas passer une chaîne comme premier paramètre de setInterval
ou setTimeout
. Vous devez soit passer un identificateur de fonction (comme vous avez fait avec setInterval(foo, 50);
) ou passer une fonction anonyme (en utilisant le mot-clé function
).