2010-01-20 76 views
2

我有一個頁面,其中包含大約100個圖像的列表,我不希望瀏覽器必須加載所有它,如果用戶只能查看約。 10個。jQuery lazyload插件

所以我試了我的頁面上的jQuery.lazyload插件。

如果我寫:

$(function() { 
    $('.list li img').lazyload({ placeholder: 'n.gif' }); 
}); 

的代碼:前lazyload被施加到圖像

<ul class="list"> 
    <li><img src="myawesomeimage.jpg"></li> 
</ul> 

的瀏覽器加載的圖像。 我試圖在沒有文檔就緒結構的圖像標籤下面使用lazyload - 同樣的結果

我通過一個php腳本代理圖像加載,記錄對圖像的訪問 - 它仍然加載所有的開頭...

任何人有想法?

回答

4

您是在本地測試還是通過互聯網連接測試。我唯一能想到的是,如果你正在本地開發或者在本地網絡上開發,圖片的加載速度會非常快,以至於插件在加載之前不會執行。一種調試方法可能是使用Firebug網絡選項卡。在執行延遲加載之前,將$ .ajax調用添加到任何地方,然後檢查網絡選項卡,以查看AJAX請求何時與加載圖像時相比較。如果一切正常,您會在之前看到圖片請求中的AJAX請求。如果您沒有看到任何圖片請求,請確保您正在查看「全部」羣組。

另外,請確保您在測試所有這些時禁用緩存,否則瀏覽器會立即從緩存中加載圖像。

最後,我注意到插件創建者提到它在IE中與jQuery 1.3配對時不起作用。你在測試什麼瀏覽器?

+0

的源代碼... 我想試試寬度AJAX ...很酷的想法 – Beerweasle 2010-01-20 14:06:29

+0

OK(職高的jQuery 1.3.2和)通過無緩存 和IM測試互聯網連接與Firefox IM測試,這就是我發現了什麼:我互聯網連接速度如此之快,大約20張圖片已經加載,直到DOM準備就緒... 我可以嘗試不要等待dom準備好並將lazyload綁定在列表下面...應該更好地工作 – Beerweasle 2010-01-21 06:33:58

4

我發現不同的瀏覽器有不同的行爲。有些瀏覽器會預載所有的圖片,即使使用了lazyload。

如果你可以控制HTML的生成,這是一個絕對的解決方案。

輸出圖像標籤,像這樣:

<img src=placeholder.png original=myimage.png> 

換句話說 - 使src屬性點一些佔位圖像(或完全忽略它),和原來的屬性點指向你想偷懶的圖像-loaded。

這將導致瀏覽器預先加載佔位符圖像(最好只對您的所有img標籤使用1個佔位符),然後等待加載原始屬性指向的圖像。根據我的經驗,這適用於所有瀏覽器。

+0

但是,用戶不會看到任何圖像,如果javascript被禁用:) – Beerweasle 2010-08-05 06:31:32