2010-04-22 322 views

回答

10

該操作是異步的;很多圖片「預加載」代碼都依賴於該功能。

編輯:給一點點有用的信息以及。如果你希望有一定的操作同步等待圖像通過JavaScript的形象目標負載,可以使用onload事件,像這樣:

var img = new Image(); 
img.onload = function() { /* onLoad code here */ }; 
img.src = 'xxxxxx'; 
+2

設置圖像源並在圖像src設置後調整imediatelly大小時,請注意異步圖像加載。 https://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader調整大小可能會或不會工作... onload必須使用... – OSP 2013-03-07 12:46:29

2

變種IMG =新的圖片();

這是創建圖像的舊方法,它已被棄用。首選document.createElement('IMG')或通過字符串和innerHTML創建一個。

現在,圖像是replaced elements,這意味着它們每當它們到達時都會加載,但如果指定了它們的尺寸,則在佈局流程中爲它們保留空間。 (如果沒有,則保留一個圖標大小的空間,當圖像以標題的形式到達時,屏幕會重新繪製;這可能會讓用戶感到不安,因此建議您在繪製頁面時準備好圖像尺寸第一次)

+1

已過時?真?我不相信它曾經是任何標準的一部分。 – 2010-04-22 14:12:02

+0

@Tim Down:我的意思是說,這是創建圖像的舊的(1990年代的)方式,這不是當前實踐的一部分。 – Robusto 2010-04-22 14:43:51

+0

'new Image()'繼續在支持圖片的每個支持腳本的瀏覽器中工作,並且我贊成通過'innerHTML'。同意'document.createElement(「IMG」)'是可取的。 – 2010-04-22 15:29:03

4

更改src是異步的。

代碼

image.src = "http://newimage-url";

將立即返回,瀏覽器將在另一個線程加載新形象。在完全加載之前,<img>標記的所有屬性都不正確,例如寬度或高度。因此$(image).width()可能不會返回新圖像的寬度。

正如@Dereleased所指出的那樣,您可以實現一個'on load'方法,該代碼只有在圖像加載完成後纔會執行。 jQuery的load()可以輕鬆實現。