< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
最近在做web開發,其中有一個需求:利用Javascript擷取要加載的圖檔的尺寸,是以很自然的,我就想到了img的onload方法,在 firefox下開發完成後,我到IE下調試,發現img的onload事件很多情況下都不被調用。
我最初的代碼如下:
var img = new Image;
img.src = "test.gif";
img.onload = function(){
alert ( img.width );
};
這段代碼看着沒什麼問題,但是為什麼onload沒有被IE調用呢?因為IE會緩存圖檔,第2次加載的圖檔,不是從伺服器上傳過來的,而是從緩沖區裡加載的。是不是從緩沖區裡加載的圖檔就不觸發onload事件呢?我于是我測試了以下代碼,成功了~
我把onload寫到前面去,先告訴浏覽器如何處理這張圖檔,再指定這張圖檔的源,這樣就正常了。是以,不是IE沒有觸發onload事件,而是因為加載緩沖區的速度太快,以至于沒有運作到img.onload的時候,onload事件已經觸發了。這讓我想到了Ajax,我們在寫xmlhttp的時候,都是先指定onstatechange的回調函數,然後再send資料的,道理是一樣的
<a href="http://enetcorner.blog.163.com/tag/javascript%26%2347%3Bajax%E4%B8%93%E6%A0%8F/feeds">#javascript/ajax專欄</a>
本文轉自 netcorner 部落格園部落格,原文連結: http://www.cnblogs.com/netcorner/archive/2010/07/14/2911995.html ,如需轉載請自行聯系原作者