作者 主題: Javascript image onload()之後的程式不能執行  (閱讀 7022 次)

0 會員 與 1 訪客 正在閱讀本文。

yes298

  • 活潑的大學生
  • ***
  • 文章數: 380
    • 檢視個人資料
有一讀取相片真實大小的JavaScrip小程式, 為了確保大相片完全load完後才讀取其大小, 我用了onload(), 但用後發現有許多怪事,
第1是在getRealPhotoSize()中thisImg.onload() = showSize(thisImg);之後程式不會再被執行,例如alert('hi');
第2是在call getRealPhotoSize()之後的程式亦不再執行了,例如   getRealPhotoSize('test2.png');就沒有執行.
若改為如下則2次call 都會執行:
<script>
  getRealPhotoSize('test.png');
</script>
<script>
  getRealPhotoSize('test2.png');
</script>

請問各位大哥, 如果一定要用onload(), 如何消除以上錯誤呀, 其實我很想在
getRealPhotoSize()中返回讀取的相片大小值.... 請幫忙改錯和指教, 謝謝~
------------------------------------------------------------------------------------

代碼: [選擇]
<script>
// 取得相片的真實大小
function getRealPhotoSize(photoURL)
{ var thisImg=new Image();    
thisImg.src= photoURL;
thisImg.onload() = showSize(thisImg);
alert('hi');
}
function showSize(thisImg)
{ alert(thisImg.width + ',' + thisImg.height );
}
</script>

<body>
<script>
  getRealPhotoSize('test.png');
  getRealPhotoSize('test2.png');
</script>
</body>

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Javascript image onload()之後的程式不能執行
« 回覆 #1 於: 2007-04-21 19:10 »
代碼: [選擇]
thisImg.onload() = showSize(thisImg);

這行的用法不對吧..

試試這樣...

 
代碼: [選擇]
thisImg.onload = showSize;

然後在 showSize() 裏頭用 this 取資料

yes298

  • 活潑的大學生
  • ***
  • 文章數: 380
    • 檢視個人資料
Javascript image onload()之後的程式不能執行
« 回覆 #2 於: 2007-04-26 15:55 »
哦, 原來如此, 但就不能傳送參數去嗎?

經過好多次的嘗試, 發覺在IE中JavaScript讀取相片的大小,
經常都是不準確的,即使是十多K的檔案, 同一檔案亦每次會不相同(約10次就有1次不正確)... 請大伙幫手改良, 謝謝
-------------------------------------------------------------------------------------
代碼: [選擇]
// 取得相片的真實大小
function getRealPhotoSize(photoURL)
{ var thisImg = null;
thisImg =new Image();
    thisImg.position="absolute";
thisImg.style.visibility="hidden";
thisImg.src=photoURL;
thisImg.onload = function(){ thisImg.width = this.width; thisImg.height = this.height; }
    thisImg.onload;
    var pSize = new Array('','');
pSize[0] =  thisImg.width;   // 相片原本的Width.
pSize[1] =  thisImg.height;   // 相片原本的Height.
//alert('getRealPhotoSize() 相片的真實大小: \r' +pSize);
return pSize;
}

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Javascript image onload()之後的程式不能執行
« 回覆 #3 於: 2007-04-27 08:24 »
引述: "yes298"
經過好多次的嘗試, 發覺在IE中JavaScript讀取相片的大小,
經常都是不準確的,即使是十多K的檔案, 同一檔案亦每次會不相同(約10次就有1次不正確)...


那可以試試 onload 一秒鐘之後再去抓資料 ..