我希望在访问者到达网站时淡化背景图像,但当他们已经在缓存中拥有该图像时不需要淡化。 大致如下:
- 检查是否已在缓存中存在背景图像。
- 如果是,则显示它。
- 如果没有,则隐藏它,并在加载时淡入。
使用jQuery,我可以隐藏它,然后在加载时淡入:
$("#bkg img").hide();
$('#bkg img').load(function() {
$(this).fadeIn();
});
但是,如果图片已经被缓存,我该如何使其条件执行?
我在论坛上找到的所有内容都是在图像完成加载时触发。我如何让它因为没有加载而触发?
谢谢任何帮助, Lernz
@Sima 基于那个线程的代码,我已经做到了以下步骤——但似乎没有任何效果。如果您能看出我错在哪里,那就太好了:
var storage = window.localStorage;
if (!storage.cachedElements) {
storage.cachedElements = "";
}
function logCache(source) {
if (storage.cachedElements.indexOf(source, 0) < 0) {
if (storage.cachedElements != "")
storage.cachedElements += ";";
storage.cachedElements += source;
}
}
function cached(source) {
return (storage.cachedElements.indexOf(source, 0) >= 0);
}
var plImages;
//On DOM Ready
$(document).ready(function() {
plImages = $("#fundo-1 img");
//log cached images
plImages.bind('load', function() {
logCache($(this).attr("src"));
});
//display cached images
plImages.each(function() {
var source = $(this).attr("src")
if (!cached(source)) {
$(this).hide().fadeIn();
}
});
});
.hide()
隐藏它(在if
语句内)。 :) - user1106925document.getElementById("bkg")
- 但我非常确定这不是它无法工作的原因。 - karim79