2011-10-15 56 views
1

我允许用户在我的网站上提交图片作为缩略图使用。缩略图不会存储在我的服务器上。有时候,其中一些非常慢。我怎样才能删除加载时间过长的那些?我能想到的唯一的事情是使用.load()或.error(),但这些事件甚至在图像加载/失败之前不会触发。如何删除使用JQuery加载速度太慢的图像?

编辑:或者更好,我该如何暂时显示加载.gif?

回答

1

你有没有考虑过使用动画GIF作为包含div的缩略图的背景?

1

您可以随时对图像进行编码(即页面中的标签),以便使用某种“加载”图像,这种图像始终保持相同,可能会被缓存。然后,您可以将实际图像加载到Image对象中。当“load”事件触发时,您可以重新分配标签的“src”属性,以便显示现在加载的图像。

<!-- in the page --> 
<img class='slow' src='common_loading_image.png' data-real-image='the/real/image.png'> 

// JS code 
$(function() { 
    $('img.slow').each(function() { 
    var $img = $(this), real = new Image(); 

    real.onload = function() { 
     $img.src = real.src; 
    }; 
    real.src = $img.data('realImage'); 
    }); 
}); 

这依赖于过程的图像被送达适当的缓存头。如果图像没有被缓存,那么你将不得不尝试类似背景图像的建议。

+0

为什么它不适用于未缓存的图像? – memical

+0

重点在于将图像存入缓存,以便随后更新''标记的“src”属性不会导致另一个HTTP请求。 – Pointy

0

你可以把一个装浮子的实际图像之上,而当负载(),隐藏载浮

0

我认为最好的解决办法,如果使用背景负载形象尖尖和马蹄写道。

但是,如果您真的想删除它们,您可以处理所有图像上的加载事件以标记下载的图像。

使用计时器,您可以在x秒后检查哪些图像尚未加载并删除它们。