1

我有一个奇怪的问题,我只在 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。

如果有什么办法解决这个问题?

4

2 回答 2

0

好的,刚刚想通了。iPad 似乎将我的元素(比如 userSetting1 为 0.15)设置为 0.1503850384038439248。所以,我必须在用户设置和 .css 拉取上运行 .toFixed(2)。

于 2013-05-14T21:04:57.380 回答
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; };
于 2016-04-22T11:08:45.597 回答