jQuery:动态图像处理(等待加载)

标签 jquery image load callback

我正在尝试编写一个插件,该插件具有内置函数,可以等到页面上的所有图像加载完毕后再执行自身。 $(window).load() 仅在页面初始加载时有效,但如果有人想通过 AJAX 拉取包含图像的 HTML,则它不起作用。

有什么好的方法可以做到这一点并实现它,以便它可以在插件中独立存在吗?我尝试过循环 $('img').complete,我知道这是行不通的(图像永远不会加载,并且浏览器在“脚本需要很长时间才能完成”的情况下崩溃)漏洞)。有关我正在尝试执行的操作的示例,请访问我要放置该插件的页面:

http://www.simplesli.de

如果您转到“更多用途”部分(在导航栏上单击它),您会发现图像幻灯片无法正确加载。我知道当前的代码不起作用,但它只是保留在我找到答案之前。

编辑:尝试此解决方案,但它不起作用:

if($('.simpleSlide-slide img').size() > 0) {
    var loaded_materials = $('.simpleSlide-slide img').get();
} else {
    var loaded_materials = $('.simpleSlide-slide').get();
}

$(loaded_materials).live('load', function() {
         /* Image processing and loading code */
    });

最佳答案

循环图像并调用 $('img').complete 的问题是浏览器 UI 是单线程的,因此您永远不会给它加载图像的机会,因为它是总是在你的循环中。您可以使用 setTimeout 让浏览器正常工作。例如,

$.get("whatever",function(html) {
   $('#foo').html(html);
   var images = getTheImages();
   function checkImages() {
      var done = true;
      $.each(images,function() {
         done = done && this.complete;
         return done;
      });
      if(done) {
        fireEvent();
      } else {
        setTimeout(checkImages,100); // wait at least 100 ms and check again
      }
   }
});

关于jQuery:动态图像处理(等待加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546333/

相关文章:

amazon-web-services - 如何使用代理协议(protocol)版本 2 通过 AWS Network Load Balancer 获取客户端的真实 IP 地址?

linux - kafka的performance脚本怎么用text呢?

jquery - 获取深度搜索中的第一个jquery元素并中断遍历

jquery - 列出 dom 元素上绑定(bind)的所有 jquery 事件

python - cv2直接tesseract不保存

php - 将图像从android上传到php服务器

php - 通过 HTTPS 从远程服务器复制图像

javascript - 尝试将 SVG 签名转换为光栅图像

Javascript/jQuery 在单击时更改 CSS 不起作用

javascript - 有没有办法只在显示不为无时加载图像?