在ie8中未调用的图像上的onload回调

时间:2013-01-20 21:40:54

标签: javascript jquery

我正在尝试预加载图像并将高度和宽度设置为容器。

问题似乎与ie8中的缓存有关,因为它无法在后续刷新时加载。

我抬起头来尝试了多种解决方案,但似乎没有任何效果,至少不一致。

目前的Javascript:

    img = new Image();
    img.src = '/images/site/image.jpg';
    img.onload=function(){
        var width = img.width + 'px';
        var height = img.height + 'px';

        $('#container').css({'width':width,
                          'height':height
        });
    };

感谢任何建议,谢谢。

2 个答案:

答案 0 :(得分:29)

在设置onload之前,您必须设置src回调。

缓存图像时,不会使用您的代码调用onload回调,因为在设置回调之前会生成load事件。

这样做:

img = new Image();
img.onload=function(){
    var width = img.width + 'px';
    var height = img.height + 'px';

    $('#container').css({'width':width,
                      'height':height
    });
};
img.src = '/images/site/image.jpg';

答案 1 :(得分:4)

即使在onload事件之后设置了src之后,即使在设置了src后,ie7和ie8也是如此,事件监听器仍然会错过它。

检查一下,这是我最终必须为我的一个项目做的事情 - 准备好了吗? setTimeout的。对!这就是你必须编写代码才能让事情“工作”的延迟。

myImage.onload = doSomething;

var slowMeDown = setTimeout(function(){
                      myImage.src = "img/somePic.jpg";
                 },300);

取消再用-可信....