9

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

问题似乎与 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
        });
    };

任何建议表示赞赏,谢谢。

4

2 回答 2

30

您必须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';
于 2013-01-20T21:41:50.473 回答
4

这就是 ie7 和 ie8 的迟钝程度,即使在 onload 事件之后设置了 src,事件侦听器仍然会错过它。

看看这个,这就是我最终必须为我的一个项目做的事情——准备好了吗?设置超时。是的!这就是你必须编写代码才能让事情在 ie 中“工作”的程度。

myImage.onload = doSomething;

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

令人难以置信的令人难以置信的......

于 2014-03-05T21:11:01.380 回答