javascript 图片预加载

请参见最新的《javascript 图片预加载

=========================================

头题】这又是一篇探讨文。即为我学习中总结,不是教程,不是技术样板,请你抱着怀疑的、挑错的态度来阅读此文。

我早在暑假初的时候写过一篇《我是如何处理文章中图片的》,其实那篇文章中的代码主要是为了限制图片的大小,因为IE对图片的按比例处理支持很不好。比如我对图片限制“max-width:600px”,火狐、chrome等浏览器会按比例缩小图片,而IE这方面较差,往往不是按比例缩小,会导致图片变形。而且IE6不支持max-width。

所以为了兼容性,才要去使用JS来处理。现在来看早期的这篇文章,发觉代码中存在很多不合理之处。所以我重写了获取图片大小的方法。

/*!
 @FileOverview 获取图片尺寸
 @Author liuqiqi || imqiqiboy@g mail.com || http://www.qiqiboy.com
 @date 2010/11/29
 @param cfg 配置项,cfg.img为一个图片对象的引用或者图片的url,cfg.oncomplete为获取尺寸后的后续操作,即回调函数。具体应用请看例子
 @return none
*/
function getImageSize(cfg){
    var img=document.createElement('img'),
        callback=cfg.oncomplete;
    img.src = typeof cfg.img == 'string'?cfg.img:cfg.img.src;
    img.setAttribute('style','position:absolute;visibility:hidden;');
    document.body.appendChild(img);
    img.οnlοad=img.οnerrοr=img.onreadystatechange=function(){
        if(img&&img.readyState&&img.readyState!='loaded'&&img.readyState!='complete')
            return;
        img.onload = img.onreadystatechange = img.onerror = null;
        callback.call({"width":img.width,"height":img.height},null);
        img.parentNode.removeChild(img);
        img=null;
    };
}
 
/* 例子1,获取远程图片的尺寸 */
getImageSize({
        img:'http://www.qiqiboy.com/wp-content/uploads/2010/11/bing.png',
        oncomplete:function(){
            alert('宽度:'+this.width+','+'高度:'+this.height)
        }
    });
 
/* 例子2,限制class为myimg的图片的大小为600以内 */
var imgs=getElementsByClassName('myimg','img',document),//getElementsByClassName为一个自写的结点获取方法,不是JS原生支持的哦
    maxWidth=600;//最大宽度为600
for(var i=0;i<imgs.length;i++){
    getImageSize({
        img:imgs[i],
        oncomplete:function(){
            if(this.width>maxWidth){
                imgs[i].height=Math.round(this.height/this.width*maxWidth);
                imgs[i].width=maxWidth;
            }
        }
    });
}

以上代码中也包含了两个具体应用的例子。函数参数cfg是个对象,其中oncomplete为尺寸获取之后的响应函数,图片的尺寸保存在响应函数的调用对象中,使用this.width、this.height就可以分别取到图片的宽度和高度。

注:如果你想要限制图片尺寸,请参考最新的文章《终极完美版javascript获取并限制调整图片尺寸

AlvearIceCave_ZH-CN1076291981

 

source:http://www.qiqiboy.com/2010/11/30/get-the-size-of-a-remote-image.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值