Dev.Hong
将欲取之 必先予之……
随笔- 53  文章- 0  评论- 220 
博客园  首页  新随笔  联系  管理  订阅 订阅
在IE中使用透明PNG图片

众所周知IE对PNG的支持是有bug的,但使用GIF时则会有毛边,不爽。今天在网上溜达时发现原来可以通过滤镜来迂回解决。

/**
 * 加载PNG,当,仅当在IE中呈现时调用
 * @param {string} 图象路径,不能为空
 * @callback {function} 当加载完成时发生的事件
 
*/
loader.loadPNG 
= function(url, callback){
    
if(url){
        
if(url.toUpperCase().indexOf(".PNG") > 0 && Ext.isIE){
            
var img = new Image();
            img.src 
= url;
            
            img.onreadystatechange 
= function(){
                
if(this.readyState == "complete" || this.readyState == "loaded"){
                    
this.onreadystatechange = null;

                    
var w = this.width;
                    
var h = this.height;
                    
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src.replace('%23', '%2523').replace("'", "%27") + "', sizingMethod='image')";
                    
this.src = "resources/images/pngblank.gif";//
                    //如果不设置width和height并不影响图片的呈现,但在进行dom操作时,获取的width就不指定url图象的width了
                    this.width = w;
                    
this.height = h;

                    
if(callback)
                        Ext.callback(callback, 
this);
                }
            }
        }
        
else{
            
var img = new Image();
            img.src 
= url;
            
if(callback)
                Ext.callback(callback, img);
        }
    }
};

使用也很简单
Map2008.loader.loadPNG("resources/images/logo.png", function(){
    document.body.appendChild(
this);
});

需要的朋友可以从这里下载。
posted on 2007-12-13 15:43 Dev.Hong 阅读(584) 评论(2) 编辑 收藏
刷新评论刷新页面返回顶部
程序员问答社区,解决您的IT难题
博客园首页博问新闻闪存程序员招聘知识库
Copyright ©2012 Dev.Hong