1

我正在使用来自https://github.com/alexanderdickson/waitForImages的插件来检测图像何时加载。

下面是我的代码:

$('.marquee').waitForImages(function() {
  console.log('All images have loaded.');
  setTimeout(startMarquee);
}, function(loaded, count, success) {
  console.log(loaded + ' of ' + count + 
   ' images has ' + (success ? 'loaded' : 'failed to load') + '.');
  $(this).addClass('loaded');
});

图像加载完成后,我将开始图像的选取框滚动。

我的问题是,一些图像尚未加载,但只显示一个像这样的小空方框: 在此处输入图像描述

该插件还认为它已经加载。知道如何解决吗?

仅显示一个小的空方框是否考虑加载图像?

4

2 回答 2

0

如果您想等到所有页面图像加载完毕后再运行您的字幕代码,您可以使用:

$(window).on("load", function() {
    // all page html and images loaded
});

更多细节可以在这个问题中找到: 在执行某事之前要求 jQuery 等待所有图像加载的官方方式

于 2016-08-26T10:13:59.503 回答
0

只写你自己的。

<marquee id="marquee" style="visiblity:hidden">
  <img src="image1.jpg" onload="countMe(this,1)" onerror="countMe(this,0)"/>
  <img src="image1.jpg" onload="countMe(this,1)" onerror="countMe(this,0)"/>
  <img src="image1.jpg" onload="countMe(this,1)" onerror="countMe(this,0)"/>
 </marquee>

 <script>
 var imageCount = 0, nofImages=$("#marquee img"); 
 function countMe(img,success) {
   if (!success) $(img).hide();
   imageCount++;
   if (imageCount == nofImages) $("#marquee").show();
 }
 </script>

如果您想给图像一个机会并且如果永久错误不加载选框,您可以尝试

<marquee id="marquee" style="visiblity:hidden">
  <img src="image1.jpg" onload="countMe(this)" onerror="reloadMe(this)"/>
  <img src="image2.jpg" onload="countMe(this)" onerror="reloadMe(this)"/>
  <img src="image3.jpg" onload="countMe(this)" onerror="reloadMe(this)"/>
 </marquee>

 <script>
 var imageCount = 0, nofImages=$("#marquee img"); 
 function countMe(img) {
   imageCount++;
   if (imageCount == nofImages) $("#marquee").show();
 }
 function reloadMe(img) {
   var tries = img.getAttribute("tries")?parseInt(img.getAttribute("tries"),10):1;
   if (tries) == 3) return; // stop it
   tries++;
   img.setAttribute("tries",tries);
   img.src=img.src;
 }
 </script>
于 2016-08-26T06:55:58.000 回答