我允许用户在我的网站上提交图片作为缩略图使用。缩略图不会存储在我的服务器上。有时候,其中一些非常慢。我怎样才能删除加载时间过长的那些?我能想到的唯一的事情是使用.load()或.error(),但这些事件甚至在图像加载/失败之前不会触发。如何删除使用JQuery加载速度太慢的图像?
编辑:或者更好,我该如何暂时显示加载.gif?
我允许用户在我的网站上提交图片作为缩略图使用。缩略图不会存储在我的服务器上。有时候,其中一些非常慢。我怎样才能删除加载时间过长的那些?我能想到的唯一的事情是使用.load()或.error(),但这些事件甚至在图像加载/失败之前不会触发。如何删除使用JQuery加载速度太慢的图像?
编辑:或者更好,我该如何暂时显示加载.gif?
你有没有考虑过使用动画GIF作为包含div的缩略图的背景?
您可以随时对图像进行编码(即页面中的标签),以便使用某种“加载”图像,这种图像始终保持相同,可能会被缓存。然后,您可以将实际图像加载到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');
});
});
这依赖于过程的图像被送达适当的缓存头。如果图像没有被缓存,那么你将不得不尝试类似背景图像的建议。
你可以把一个装浮子的实际图像之上,而当负载(),隐藏载浮
我认为最好的解决办法,如果使用背景负载形象尖尖和马蹄写道。
但是,如果您真的想删除它们,您可以处理所有图像上的加载事件以标记下载的图像。
使用计时器,您可以在x秒后检查哪些图像尚未加载并删除它们。
为什么它不适用于未缓存的图像? – memical
重点在于将图像存入缓存,以便随后更新''标记的“src”属性不会导致另一个HTTP请求。 – Pointy