J'ai un problème étrange que je rencontre seulement sur l'IPAD. Il semble que tous les autres navigateurs peuvent gérer cela très bien, mais j'ai une condition similaire à ceci:Odd ParseFloat Éditer Javascript
if(parseFloat($('#element1').css('opacity'),10).toFixed(2)!=userSetting1 ||
parseFloat($('#element2').css('opacity'),10).toFixed(2)!=userSetting2
){ return; };
... rest of function
Donc, au fond, j'ai deux ou trois éléments qui animent d'une action de l'utilisateur. Pour empêcher l'utilisateur de continuer à allumer le reste de la fonction, je suis en train de tester si l'élément a fini d'animer son opacité. Usersetting1 et 2 sont les opacités que l'utilisateur définit element1 et 2 pour animer respectivement. Donc, fondamentalement, si l'opacité n'a pas atteint l'opacité définie par l'utilisateur, elle disparaît de la fonction. Fonctionne très bien partout sauf l'iPad et il est basé sur un problème avec parseFloat. Si l'utilisateur définit 0.15, 0.25, etc comme paramètre d'opacité, alors le paramètre parseFloat (, 10) .toFixed (2) fonctionnera et permettra à la condition de tester correctement. Toutefois, si l'utilisateur définit 1 ou 0 pour l'opacité, il vissera tout. Apparemment, l'iPad ne pense pas que 1.0 = 1.
S'il y a un moyen de contourner cela?
certains des formats de code les plus étranges que j'ai jamais vu. mais +1 bonne question. – sgroves
Peut-être qu'il devient «0.99» pour une raison quelconque? J'ai le sentiment que cela a quelque chose à voir avec l'arithmétique en virgule flottante. Bien que je ne sois pas sûr de ce que votre 'parseFloat (, 10) .toFixed (2)' est ... – Ian
jQuery peut faire $ ('element'). Is (': animated') pour tester si quelque chose est en train d'animer, peut-être c'est un meilleur test à faire que de comparer les valeurs des chaînes d'opacité. http://api.jquery.com/animated-selector/ –