博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
延迟加载
阅读量:5881 次
发布时间:2019-06-19

本文共 2923 字,大约阅读时间需要 9 分钟。

var imagesrcname='a',thissrolltop=300,	lazyLoad=(function(){		var map_element    = {},			element_obj    = [],			download_count = 0,			last_offset    = -1,			doc_body,			doc_element,			lazy_load_tag; 		function initVar(tags) { 			doc_body      = document.body; 			doc_element   = document.compatMode == 'BackCompat' ? doc_body: document.documentElement; 			lazy_load_tag = tags || ["img", "iframe"]; 		}; 		function initElementMap() { 			for (var i = 0, len = lazy_load_tag.length; i < len; i++) { 				var el = document.getElementsByTagName(lazy_load_tag[i]); 				for (var j = 0, len2 = el.length; j < len2; j++) { 					if (typeof(el[j]) == "object" && el[j].getAttribute(imagesrcname)) { 						element_obj.push(el[j]); 					} 				} 			} 			for (var i = 0, len = element_obj.length; i < len; i++) { 				var o_img = element_obj[i]; 				var t_index = getAbsoluteTop(o_img);				if (map_element[t_index]) { 					map_element[t_index].push(i); 				} else { 					var t_array = []; 					t_array[0] = i; 					map_element[t_index] = t_array; 					download_count++;				} 			} 		}; 		function initDownloadListen() {  			if (!download_count) return; 			var getscrolltop = document.body.scrollTop;			if(getscrolltop == 0)			{				getscrolltop = document.documentElement.scrollTop;			}			var offset = (window.MessageEvent && !document.getBoxObjectFor) ? getscrolltop: getscrolltop; 			var visio_offset = offset + doc_element.clientHeight; 			if (last_offset == visio_offset) { 				setTimeout(initDownloadListen, 200); 				return; 			} 			last_offset = visio_offset; 			var visio_height = doc_element.clientHeight + thissrolltop; 			var img_show_height = visio_height + offset; 			//var allurlnum = parseInt(imageurlarray.length);			//if(allurlnum <= 0)			//{			//	allurlnum = 1;			//}			var j = 0;			for (var key in map_element) { 				if (img_show_height > key) { 					var t_o = map_element[key]; 					var img_vl = t_o.length; 					for (var l = 0; l < img_vl; l++) { 						//var u_j = j % allurlnum;						//var thisurl = imageurlarray[u_j];						//if(element_obj[t_o[l]].getAttribute(imagesrcname).indexOf('http://') != -1) thisurl='';						//element_obj[t_o[l]].src = thisurl + element_obj[t_o[l]].getAttribute(imagesrcname); 						element_obj[t_o[l]].src = element_obj[t_o[l]].getAttribute(imagesrcname);						element_obj[t_o[l]].removeAttribute(imagesrcname);						j++; 					} 					delete map_element[key]; 					download_count--; 				}			} 			setTimeout(initDownloadListen, 200); 		}; 		function getAbsoluteTop(element) { 			if (arguments.length != 1 || element == null) { 				return null; 			} 			var offsetTop = element.offsetTop; 			while (element = element.offsetParent) { 				offsetTop += element.offsetTop; 			} 			return offsetTop; 		} 		function init(tags) { 			initVar(tags); 			initElementMap(); 			initDownloadListen(); 		}; 		return { 			init: init 		} })();lazyLoad.init();

 

转载于:https://www.cnblogs.com/xupeiyu/p/3907805.html

你可能感兴趣的文章
Java多线程设计模式(2)生产者与消费者模式
查看>>
对象并不一定都是在堆上分配内存的
查看>>
刘宇凡:罗永浩的锤子情怀只能拿去喂狗
查看>>
php晚了8小时 PHP5中的时间相差8小时的解决办法
查看>>
JS(JavaScript)的初了解7(更新中···)
查看>>
svn文件管理器的使用
查看>>
Ansible playbook 使用
查看>>
for/foreach/linq执行效率测试
查看>>
js /jquery停止事件冒泡和阻止浏览器默认事件
查看>>
长春理工大学第十四届程序设计竞赛(重现赛)I.Fate Grand Order
查看>>
好作品地址
查看>>
[翻译]Protocol Buffer 基础: C++
查看>>
runloop与线程的关系
查看>>
[Bzoj2246]迷宫探险(概率+DP)
查看>>
详解消息队列的设计与使用
查看>>
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
控制子窗口的高度
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
Alpha线性混合实现半透明效果
查看>>
chkconfig 系统服务管理
查看>>