好的,所以我正在尝试做一些动画。 Here是测试页。
有相当数量的代码,我认为这些都是相关的,所以在这里粘贴它可能不值得。我可以发布函数定义:
var ImageLoader = function(c,imagelist,oncomplete) {
var l = 0, imgs = [], i, loaded = 0;
for( i in imagelist) {
l++;
imgs[i] = new Image();
imgs[i].style.position = "absolute";
imgs[i].style.left = "100%";
c.appendChild(imgs[i]);
imgs[i].onload = function() {
loaded++;
if( loaded == l) oncomplete(imgs);
};
imgs[i].onerror = function() {
alert("Failed to load "+this.src);
};
imgs[i].src = imagelist[i];
}
};
var img2bg = function(c,img) {
var d = document.createElement('div');
d.style.width = img.width+"px";
d.style.height = img.height+"px";
d.style.backgroundImage = "url('"+img.src+"')";
d.style.position = "absolute";
d.style.left = "100%";
c.appendChild(d);
return d;
};
var Animate = function(callback,time,thenwhat) {
var start = new Date().getTime();
var timer = window.setInterval(function() {
var now = new Date().getTime();
var pos = Math.min(1,(now-start)/time);
if( callback) callback(pos);
if( pos == 1) {
clearInterval(timer);
if( thenwhat) thenwhat();
}
},25);
};
然而,正如我所提到的,这可能本身并不是很有用。
无论如何,关于这一点,这个动画在IE9,IE10,Chrome,Firefox中完美运行......但是在IE8和7中它很难失败。
在ImageLoader
的回调函数中,我在两个特定图像上调用img2bg
。但由于某种原因,该函数被其中一个图像调用两次,而四次或五次没有第二个参数。在整个脚本中根本没有对img2bg
的其他调用,那么是什么给出了?
答案 0 :(得分:0)
您确定要使用的所有功能都可以在IE7 / 8中使用吗?你使用不透明度。我知道背景位置充其量只是错误。您使用html5 doctype,所以我不知道这是否意味着您可能也在使用html5元素或API。这就是让我觉得存在问题的原因。
答案 1 :(得分:0)
问题的“解决方案”是功能检测并使动画可选,以便旧浏览器可以跳过它或播放更简单的动画。