jquery - 如果图像未加载,则执行某些操作(jquery)

标签 jquery image load onload

我希望在访问者到达网站时淡入背景图像,但当他们已经在缓存中获得该图像时则不淡入淡出。类似这样的事情:

  1. 检查背景图像是否已在缓存中。
  2. 如果是,则显示出来。
  3. 如果不是,则将其隐藏,加载后淡入。

使用 jQuery,我可以隐藏它,然后在加载时淡入它:

$("#bkg img").hide();

$('#bkg img').load(function() {  
 $(this).fadeIn();  
});

但是我该如何设置这个条件,以便只有在图像尚未已缓存时才会发生?

当图像加载完成时,我在论坛上找到的所有内容都会触发。由于未加载,我怎样才能触发它?

感谢您的帮助, 伦茨

@Sima 基于 that other thread 中的代码我已经做到了以下几点 - 但似乎没有任何效果。如果您能看到我哪里出错了,那就太好了:

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();
     }
    });

});

最佳答案

你可以尝试:

if(!$('#bkg img')[0].complete) {
    $('#bkg img').hide().load(function () {  
        $(this).fadeIn();  
    });
}

https://developer.mozilla.org/en/DOM/HTMLImageElement

关于jquery - 如果图像未加载,则执行某些操作(jquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932153/

相关文章:

javascript - jquery + ajax。我的 javascript 函数出了什么问题?删除记录、添加记录而不刷新

javascript - 尝试将本地 Javascript 文件链接到 HTML 文档,但在浏览器中,我收到“无法加载资源”错误

javascript - 简单问题 : Do I need to specify width, "image"预加载图片时的高度?

MySQL - 在 LOAD DATA INFILE 上设置多个

jQuery 在站点/内容加载后淡入淡出?

javascript - 如何在自动完成文本区域的 Jquery 函数中将变量分配为 Id

android - 如何在Android中获取图像的大小?

java - 如何在不降低质量的情况下从图像 (JPG) 中删除元数据?

javascript - jQuery ajax load() javascript 没有执行?

javascript - 使用Each Loop时获取每个父节点的ID