img preload在ie7,ie8中不起作用

时间:2011-08-08 13:38:59

标签: jquery

preload = function() {

        var imgList = [];
        var imgArr = [];
        var imageSize = element.find('img').size();
        var loadImgList = element.find('img');
        for(i=0; i<imageSize;i++){
            imgArr.push($(loadImgList[i]).attr('src'));
        }

        var total = imgArr.length;
        var loaded = 0;

        for(var i in imgArr) {
            imgList.push($("<img />")
                .attr("src", imgArr[i])
                .load(function() {
                    loaded++;
                    if(loaded == total) {
                        element.find('.loader').fadeOut('slow');
                        init();
                    }
                })
            );
        }

    }

2 个答案:

答案 0 :(得分:0)

我不知道这是否解决了您的问题,因为您没有说明究竟什么不起作用,但是您需要在之后设置src 来定义处理程序onload事件。

另请注意,.load()jQuery docs:

中概述的图像一起使用时会遇到很多问题
  

与图片一起使用时加载事件的注意事项

     

开发人员尝试使用.load()解决的常见问题   快捷方式是在图像(或集合)时执行函数   图像)已完全加载。有几个已知的警告   这应该注意。这些是:

     
      
  • 它不能始终如一地工作,也不能可靠地跨浏览器
  •   
  • 如果图像src设置为,则在WebKit中无法正确触发   和以前一样的src
  •   
  • 它没有正确地冒泡DOM树
  •   
  • 对于已经存在于浏览器中的图像,可以停止触发   高速缓存
  •   

答案 1 :(得分:0)

为什么不选择no-javascript解决方案?像这样:

<!-- Preload Images -->
<div style="display: none; width:1px; height:1px;">
<img src="1.png" />
<img src="2.png" />
<img src="3.png" /> 
</div>

对我来说效果很好。 :)