我正在尝试为使用Velocity.js和Modernizr的基于CSS3的动画在Microsoft Internet Explorer 8中包含JavaScript回退。这是我正在工作的网站(这是有关跨浏览器兼容性的案例研究)。
这就是我做的方式。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="js/modernizr.custom.js"></script>
<script type="text/javascript">
Modernizr.load([{
test: Modernizr.csstransforms && Modernizr.csstransforms3d && Modernizr.cssanimations,
nope: ['http://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.2/velocity.min.js', 'js/animatie.js']
}]);
</script>
现代浏览器检测(csstransforms,csstransforms3d和cssanimations)在IE中都会返回逻辑答案 -“no-xxx”。 在这种情况下,nope数组中提到的文件都会加载。
animatie.js文件的内容如下。
$(document).ready(function(){
$('div#tandwiel').velocity({
rotateZ: '360deg'
},
{
duration: 10000,
easing: 'linear',
loop: true
});
});
我非常确定jQuery代码是正确的,因为在控制台输出可以得到可预测的结果。我也很确定Velocity.js已经加载,因为在每个浏览器中都可以实现像不透明度这样的简单动画效果。
在Velocity.js文档中,我发现它实际上不需要jQuery来执行其魔法,但应该包含它以使其在IE8中工作。
我排除了一些可能性:
- 它几乎不可能是语法错误。检查了三次。 - 它与加载顺序无关。当animatie.js文件被加载时,jQuery似乎已经被加载。yepnope库也遵循所提到的文件顺序。 - 不能是Velocity.js的问题,因为作者比我聪明多了,在IE8中没有太多抱怨它不起作用。
(我知道,旋转齿轮不会决定用户体验的成败,但我想知道这里发生了什么)。
非常感谢任何帮助。