我試圖測試動態傳遞給圖像標記的URL是否會解析。我使用下面的JavaScript函數:Javascript函數在其子程序完成之前返回
testImageUri = function(src) {
var img = new Image();
var imgStatus = false;
var goodUri = function() {
imgStatus = true;
};
var badUri = function() {
imgStatus = false;
};
img.onload = goodUri;
img.onerror = badUri;
img.src = src;
return imgStatus;
}
功能巴杜裏和goodUri被調用如預期,但他們似乎是「遲到」的testImageUri功能似乎纔得到改變imgStatus變量返回。
在javascript中如何解決這些問題?
如何避免它們?
有沒有一種經驗法則來識別易受此影響的情況?
編輯
謝謝大家的回覆。我想我明白現在發生了什麼。我將按照第一個回覆中的描述來實現該函數,但是如所建議的那樣,還有一個附加的回調參數。
再次感謝。
讓testImageUri'的'回調論據更加取勝。 – outis 2009-11-05 12:44:44
img變量在函數中是局部的,所以當您退出函數時,不再有對該對象的引用。它可能會在圖像加載之前收集,因此這些事件永遠不會發生...... – Guffa 2009-11-05 12:48:39