我在页面中需要使用
var image = new Image();
image.src="src/a.jpg" ;
然后用image来获得图片的宽度和高度但是这样第一次打开页面的时候,图片都加载不了,也就是image.width 和image.height 都为0
重新刷新一下页面才可以我试了在body的onload中提前加载
var image = new Image();
image.src="src/a.jpg" ;
这两句话,但还是不行不知道各位有什么办法能预加载这个图片吗?
我再网上查了很多预加载的方法,都不行的其实目的只有一个,就是获得图片的宽度和高度,不用image,有其他办法也行各位高手帮帮忙哈

解决方案 »

  1.   

    如果用mootools的话比较简单!它提供了一个getSize()可以获得一个高和宽的数组.
      

  2.   

    导致这种问题的原因应当是:在你读取width的时候,图片还没有完全加载,试试
    <body>
    <img id=x onload="alert(this.width)" />
    <script>
    var image = new Image();
    image.src="http://i0.sinaimg.cn/dy/U2123P1T124D2F2633DT20100107061010.jpg" ; 
    document.getElementById("x").src=image.src
    </script>
      

  3.   

    我这有一个比较简单的预加载示例:
    http://www.t6new.cn/trac/displaypic.asp?path=%2Falbum%2Fprintscrean%2Fneostream_s.png&record=3
    这些图片都是png的!网站文件在美国.图片存在中国.
      

  4.   


    或者直接用image的onload:<script>
    var image = new Image();
    image.onload = function(){alert(this.width);};
    image.src="http://c.csdn.net/bbs/t/5/i/pic_logo.gif" ;
    </script>
      

  5.   

    对,当图片加载完后有一个onload的事件。你在这个事件中得到图片的宽与高。
      

  6.   

    var image = new Image();
    image.src="http://i0.sinaimg.cn/dy/U2123P1T124D2F2633DT20100107061010.jpg" ; 
    document.getElementById("x").src=image.src
      

  7.   

    接4楼, 有些浏览器还会读取缓存,不触发onload方法. 最好还判断一下图片的complete是否为true. 如果为true, 表示已经加载完成了.
      

  8.   

    function DrawImage(ImgD,FitWidth,FitHeight){ 
    var image=new Image(); 
    image.src=ImgD.src; 
    if(ImgD.src.indexOf("nopic.png") >0) {
      ImgD.width="260"; 
    } else {
        
    if(image.width>0 && image.height>0){ 
    if(image.width/image.height>= FitWidth/FitHeight){ 
    if(image.width>FitWidth){ 
    ImgD.width=FitWidth; 
    ImgD.height=(image.height*FitWidth)/image.width; 
    }else{ 
    ImgD.width=image.width; 
    ImgD.height=image.height; 

    } else{ 
    if(image.height>FitHeight){ 
    ImgD.height=FitHeight; 
    ImgD.width=(image.width*FitHeight)/image.height; 
    }else{ 
    ImgD.width=image.width; 
    ImgD.height=image.height; 


    }


    } <img src="test.jpg" onload='javascript:DrawImage(this,300,300)'/>