imagesLoaded.js验证文章内容图片是否加载完全并实现回调的实例

本文介绍如何利用imagesLoaded.js库监控元素内的所有图片加载状态,包括成功和失败的回调处理。通过初始化设置和查看日志,可以确保文章内容图片完全加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入js文件:

<script src="../../js/imagesloaded.pkgd.js"></script>

对一个元素下的所有img进行监控:

function loaderlistening() {
        //监听blogcontent下的所有img标签元素,对每一个图片的加载作出反应
    	$('.blogcontent').imagesLoaded().progress(function (instance, image) {
			var rs = image.isLoaded ? 'loaded' : 'broken';
			var time = new Date();
			if(rs == 'loaded') {
				console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + " 第一次加载成功 " + image.img.title);
				return;
			} else {
				var initnum = 0;
				callback(initnum, image);//加载失败开始回调
			}		
		});
	}	

加载失败后回调:

function callback(initnum, image) {
		var num = initnum;
		var isLoad = true;
		var time = new Date();
		var thisimage = $(image.img);
		var height = image.img.height;
		var imageurl = image.img.src;
		var imagename = image.img.title;
                //利用高度判断图片是否加载,一般加载失败的图例也会有一个高度,比如chrome上是24px
		if(height < 100){
            isLoad = false;
        }
		if(isLoad) {
			console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + " 第 " + num + " 次加载成功 " + imagename);
                        //将页面元素图片src替换,不然指向的还是加载失败的那张图片缓存
			image.img.src = imageurl + '#';
			return;
		} else {				
			console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + " 第 " + num + " 次加载失败 " + imagename);
                        //回调的次数,按需设置
			if( num == "10" ) {
				return;
			} else {
				var nextnum = num + 1;
				console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + " 开始第 " + nextnum + " 次回调 " + imagename);
				callbackimage = new Image();
                                //给新new的图片和静态页上img元素的图片地址都加一个#号,避免浏览器访问缓存
				var imgsrc = imageurl + '#';
				thisimage.attr("src", imgsrc);
				callbackimage.src = imgsrc;
                                //每次失败后都回调,自己设置间隔时间方便测试时看日志
				setTimeout(function () { callback(nextnum, image); }, 5000);
			}				
		}	
	}
 

初始化:

$(document).ready(function() {
    	loaderlistening();
    });

调控制台看日志,效果一目了然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值