网络编程
位置:首页>> 网络编程>> JavaScript>> ie6 img onload

ie6 img onload

作者:xlingfairy 来源:dajiaozi.com 发布时间:2009-04-08 17:23:00 

标签:图片,加载,ie6

IE>6 及其它浏览器不在此文论述范围内。

img 的 onload 事件,是当图片加载完成之后,就处触发。img.complete 这个属性标识着这个图片是否以加载完成。

一般情况下,new Image(),onload 应该写在 img.src="/xxx" 的前面,这样可以避免一部分情况(部分浏览器)下,onload事件不触发,比如 图片以存到本地缓存内,第二次加载这个图片,速度非常快,还来不及触发 onload。如果接合 img.complete 这个东东来处理,基本上所有的上述情况都可以排除掉。但是有一个例外:IE6


假如我要做一个幻灯片,不是通过改变 图片的路径 ,而是 用 new Image(),当然,在 new 之前,先把图片的容器的内容清空,如:

        objs.showArea.className = 'showArea';
        objs.showArea.innerHTML = "";
        var img = new Image();
        img.onload = img_loaded;//这是个回调函数
        img.src = vars.normals[idx];
        objs.showArea.appendChild(img);

在除IE6之外的浏览器里运行,效果非常满意,但是换到 ie6 下, img_loaded 这个回调却有80%的机率不调用。为了找到原因,我来来回回折腾了N长时间,才用 setTimeout 解决这个问题:   

 $.show = function(idx){
 。。。
        if(JObj.Browser.ie && JObj.Browser.version <= 6)
            setTimeout(JObj.doFunction(_show,idx),0);////////////
        else
            _show(idx);
 。。。
    }
    var _show = function( idx ){        
        var img = new Image();
        img.onload = img_loaded;
        img.src = vars.normals[idx];
        objs.showArea.appendChild(img);
        /*if(img.complete){
         img_loaded(null,img);
        }*/
        
        vars.idx = idx;
        objs.btnOrg.href = vars.normals[vars.idx];
        objs.tb.setPosition(idx);
    }

这个 _show() 原来是要直接调用的函数 show().

另外,我用 styleSheet.addImport 这个方法来加载 css ,发现在IE6下,请求发出后,随即又终止了(aborted),木有办法,只好换另外一个方法:createStyleSheet

  $.loadCss = function(cssFile) {
            if(document.createStyleSheet)
                document.createStyleSheet(cssFile);
            else{
                if (styleSheet == null) {
                    var style = $$.$c('STYLE');
                    $$.$tag("HEAD")[0].appendChild(style);
                    styleSheet = style.styleSheet || style.sheet;
                }
                styleSheet.insertRule("@import url('" + cssFile + "');", styleSheet.cssRules.length);
            }
        }

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com