2012-08-09 83 views
0

我需要JS中的圖像預加載器。圖像由PHP腳本獲取(以避免向用戶打開文件結構)並設置爲img標記的屬性。在預加載之後,我們等待一個綁定爲事件監聽器的事件被觸發(有點像幻燈片放映)。預加載圖像PHP和等待JS直到完成

var preloadImage = $('<img />').attr('src', 'getimage.php'); 
preloadImage.onLoad = function() {console.log('finished')} 

的問題是,該課程的onLoad不起作用,因爲它與圖像中的JS被處理,而在這種情況下,我們正在等待PHP來完成讓圖像的交易。 PHP腳本就像這樣

<?php 
header("Content-type: image/png"); 
readfile('image.png'); 
?> 

任何人都有一個想法如何在這種情況下,我可以讓JS等待,直到PHP完成加載?

+1

在設置src之前設置'onload'處理程序*。瀏覽器從緩存中下載/提取圖像後,它會觸發。 – DCoder 2012-08-09 08:10:10

+1

瀏覽器不關心圖像是由Web服務器從文件系統加載還是通過PHP通過Web服務器加載。只要你正確地設置了標題,它就只是字節流。如果你的JS在圖像被服務器直接加載的時候工作,那麼當它被php加載時它就會工作。因此你的PHP腳本必須有錯誤。由於你沒有給出完整的腳本(你甚至沒有顯示''標籤,所以沒有辦法說出這裏有什麼問題。 – 2012-08-09 08:21:22

+0

@LieRyan我發佈了整個php腳本,也許我在這裏做錯了什麼? DCoder當切換上面的處理程序時,preloadImage當然是undefined或null。當設置它到選擇器onLoad事件不會觸發 – toxicate20 2012-08-09 08:35:55

回答

1

由於DaveRandom在上面的討論中完美回答了這個問題,下面是最終的代碼。 preloadImage是一個jQuery對象,這意味着需要傳遞.load()函數。

var preloadImage = $('<img />').attr('src', 'getimage.php').load(function() {console.log('finished')}) 
相關問題