我有一個jQuery插件,使用針規。在最初加載包含插件的頁面後,插件在加載背景圖像之前開始其動畫。當速度計超出範圍時,會加載另一個圖像(「破損」的計量表),但在圖像加載之前又會有一個延遲。 (看到這一點,輸入小於零或高於100的值)預加載jQuery插件的CSS背景圖像
http://jacob-king.com/demo/speedometer
我嘗試使用this solution,解決了「斷」圖像預加載的問題:
http://jacob-king.com/public/notSoPublic/jquery.speedometer-1.0.3/example.html
(function(){
// counter
var i = 0;
// create object
imageObj = new Image();
// set image list
images = new Array();
images[0]=_speedometerDirectory+"/background.jpg";
images[1]=_speedometerDirectory+"/background-broken.jpg";
// start preloading
for(i=0; i<=1; i++)
{
imageObj.src=images[i];
}
})();
但是我怎麼強制插件在啓動動畫之前等待兩個背景圖片加載?
解決方案
由於圖像加載的jQuery插件的一部分,將它們放在$ .fn外呼似乎是不恰當;除非速度計功能被調用,否則圖像不應加載。
我結束了crimson_penguin的解決方案稍加修改的版本會:
var img0 = new Image();
img0.src = _speedometerDirectory+"/background.jpg";
var img1 = new Image();
img1.src = _speedometerDirectory+"/background-broken.jpg";
$(img0).load(function() {
$(img1).load(function() {
// Everything's ready. Now we begin.
});
});
這可能看起來有點缺憾。隨意建議一個更優雅的語法(它很晚,我很累,這是有效的,所以「足夠好」)。結果可以看到here,我將把它作爲我的1.0.4更新的一部分。感謝大家。
編輯:我說得太快了。如果沒有加載到高速緩存中的圖像,該插件無法啓動的谷歌瀏覽器的第一個頁面加載...圖像已加載完成後
嘗試運行`onload`函數而不是`dom ready` – Raynos 2011-01-31 00:49:17