2013-07-09 25 views
2

是什麼的Javascript預緊力 - 的onload不一致

<img id="el" src="HD.jpg" onload="loadImage();"> 
function loadImage() {...} 

<img id="el" src="HD.jpg"> 
document.getElementById('el').onload=loadImage(); 

之間的區別?

示例1在圖像完全加載時觸發該函數,example2在加載圖像的第一位之前觸發該函數。它不應該是同一件事嗎?

與全速互聯網接入相比,差異很難發現,但顯而易見的是窄帶接入。

注意

document.getElementById('el').src.onload=loadImage(); 

也不起作用。

感謝

編輯:對不起,近似的帖子標題,不要猶豫,建議適當的一個。

回答

1

你正在做的事情從你認爲你正在做的完全不同:你分配通過loadImage回到img..onload成員。

實際上會發生什麼事是,當你的腳本負載,其分配調用loadImage()函數的結果(這就是爲什麼你看到它的任何圖像之前運行),這是最有可能undefinedimg.onload處理程序,從而禁用它。

做你想做什麼,你需要分配功能img.onload處理器 - 例如 - 只是包裝在另一個函數:

document.getElementById('el').src.onload = function() { loadImage(); }; 

或者您可以直接分配你的功能的處理程序。它很好地說明爲什麼沒有工作之前,雖然我不會推薦它:

document.getElementById('el').src.onload = loadImage; 

(注缺少()

+0

就是這樣,非常感謝。 – kursus