在IE6下:img onreadystatechange 第一次无效,以后就都可以
为何第一次浏览图片传参数过来加载onreadystatechange 这个就没有效果,第二次开始就没问题了。
        function loadImage(obj)
        {
            var img = new Image();
            img = obj;
            
            var appname = navigator.appName.toLowerCase();            
            if (appname.indexOf("netscape") == -1)
            {
               //ie
                //alert('k');  
                    img.onreadystatechange = function () {
                   
                    if (img.readyState == "complete")
                    {
                        alert('k');                
                        setSize(img.width,img.height);
                        img.style.display='none';
                    }
                };
            } else {
               //firefox
                    img.onload = function () {
                    if (img.complete == true)
                    {
                       //alert('k');
                        setSize(img.width,img.height);
                        img.style.display='none';
                    }
                }
            }
        }

解决方案 »

  1.   

    楼主可以加载的时候赋值,在onload里加载一个函数,赋值过去就可以了
      

  2.   

    <input type="file" onchange="onUploadImgChange(this)" /><script type="text/javascript">
            
            function onUploadImgChange(sender){
                if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){
                    alert('图片格式无效!');
                    return false;
                }
                
                border.style.width=0;
                border.style.height=0;            if( sender.files && sender.files[0] ){                objPreview.style.display='block';
                    objPreview.src = sender.files[0].getAsDataURL();
                   
                    testObject.style.background="url("+sender.files[0].getAsDataURL()+")";
                    loadImage(objPreview);
                  
                }else if( objPreviewFake.filters ){
                    sender.select();
                    var imgSrc = document.selection.createRange().text;
                    objPreview.style.display='block';
                    objPreview.src=imgSrc;
                    loadImage(objPreview);
                    testObject.style.background ="url("+imgSrc+")";                
                }
            }        function loadImage(obj)
            {
                var img = new Image();
                img = obj;
                
                var appname = navigator.appName.toLowerCase();            
                if (appname.indexOf("netscape") == -1)
                {
                   //ie
                    //alert('k');  
                        img.onreadystatechange = function () {
                       
                        if (img.readyState == "complete")
                        {
                            //alert('k');                
                            setSize(img.width,img.height);
                            img.style.display='none';
                        }
                    };
                } else {
                   //firefox
                        img.onload = function () {
                        if (img.complete == true)
                        {
                           //alert('k');
                            setSize(img.width,img.height);
                            img.style.display='none';
                        }
                    }
                }
            }
    </script>
    我这样要怎么改才行?
      

  3.   

    问题解决,把  objPreview.src=imgSrc;
      loadImage(objPreview);这2个位置换一下loadImage(objPreview);  
    objPreview.src=imgSrc;
      
    ,IE6这个SB,日妈W3C标准就可以不管顺序,IE6解释可能是先去赋值了,下面一个加载还没被触发到,操IE6。