我有一个奇怪的问题,我只在iPad上遇到过。似乎所有其他浏览器都可以处理这个问题,但我的条件与此类似:
if( parseFloat( $('#element1').css('opacity'),10).toFixed(2)!=userSetting1 ||
parseFloat( $('#element2').css('opacity'),10).toFixed(2)!=userSetting2
){ return; };
... rest of function
所以,基本上我有一些从用户操作动画的元素。为了防止用户连续触发函数的其余部分,我正在测试该元素是否已完成其不透明度的动画。 usersetting1和2是用户将element1和2分别设置为动画的不透明度。
所以,基本上,如果不透明度未达到用户设置的不透明度,它将退出该功能。除了iPad之外,其他地方都很棒,而且它基于parseFloat的问题。
如果用户将0.15,0.25等设置为不透明度设置,则parseFloat(,10).toFixed(2)将起作用并允许条件正确测试。
但是,如果用户为不透明度设置1或0,则会将所有内容都拧紧。显然iPad并不认为1.0 = 1。
如果有什么方法吗?
答案 0 :(得分:0)
好的,刚想出来了。 iPad似乎将我的元素(例如,如果userSetting1为0.15)动画为0.1503850384038439248。所以,我必须在用户设置和.css拉动上运行.toFixed(2)。
答案 1 :(得分:0)
var iOS = parseFloat(('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])
.replace('undefined', '3_2').replace('_', '.').replace('_', ''));
if( iOS ( $('#element1').css('opacity'),10).toFixed(2)!=userSetting1 ||
iOS ( $('#element2').css('opacity'),10).toFixed(2)!=userSetting2){ return; };