JavaScript怎么判斷圖片是否加載完成以便獲取其尺寸

字號:


    需要獲取圖片的尺寸,就需要在圖片加載完成以后才可以,下面有個不錯的方法,大家不妨參考下
    有時需要獲取圖片的尺寸,這需要在圖片加載完成以后才可以,求方法?
    一、load事件
    代碼如下:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>img - load event</title>
    </head>
    <body>
    <img id="img1" src="http://pic1.xxx.com/wall/f/51c3bb99a21ea.jpg">
    <p id="p1">loading...</p>
    <script type="text/javascript">
    img1.onload = function() {
    p1.innerHTML = 'loaded'
    }
    </script>
    </body>
    </html>
    測試,所有瀏覽器都顯示出了“l(fā)oaded”,說明所有瀏覽器都支持img的load事件。
    二、readystatechange事件
    代碼如下:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>img - readystatechange event</title>
    </head>
    <body>
    <img id="img1" src="http://pic1.xxx.com/wall/f/51c3bb99a21ea.jpg">
    <p id="p1">loading...</p>
    <script type="text/javascript">
    img1.onreadystatechange = function() {
    if(img1.readyState=="complete"||img1.readyState=="loaded"){
    p1.innerHTML = 'readystatechange:loaded'
    }
    }
    </script>
    </body>
    </html>
    readyState為complete和loaded則表明圖片已經(jīng)加載完畢。測試IE6-IE10支持該事件,其它瀏覽器不支持。
    三、img的complete屬性
    代碼如下:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>img - complete attribute</title>
    </head>
    <body>
    <img id="img1" src="http://pic1.xxx.com/wall/f/51c3bb99a21ea.jpg">
    <p id="p1">loading...</p>
    <script type="text/javascript">
    function imgLoad(img, callback) {
    var timer = setInterval(function() {
    if (img.complete) {
    callback(img)
    clearInterval(timer)
    }
    }, 50)
    }
    imgLoad(img1, function() {
    p1.innerHTML('加載完畢')
    })
    </script>
    </body>
    </html>
    輪詢不斷監(jiān)測img的complete屬性,如果為true則表明圖片已經(jīng)加載完畢,停止輪詢。該屬性所有瀏覽器都支持。