JavaScript懒加载代码
来源:互联网 发布:dubbo 视频教程 源码 编辑:程序博客网 时间:2024/05/21 13:27
;(function () { function LazyLoad() { } var download_count = 0, ele_obj = []; LazyLoad.prototype = { init: function () { //放一些初始化的方法 this.initElementMap(); this.lazy(); this.slowLoad(); }, getPosition: { /* 获取窗口的高度 document.documentElement.clientHeight IE/CH支持 document.body.client 通过body元素获取内容的尺寸 */ /*获取当前元素相对于窗口顶部的距离*/ /* 获取元素属性 elemnt.offsetWidth elemnt.offsetHeight 仅IE5不支持,放心使用吧 offsetHeight 可以获取元素的高度尺寸,包括:height + padding[top,bottom] + bottom[top,bottom] element.offsetTop //获取元素与其偏移参考父元素顶部的间隔距离 可以获取元素距其上一级的偏移参考父元素顶部的距离。包括:margin[top] + top element.offsetLeft //获取元素与其偏移参考父元素左边的间隔距离 */ /*官方解释 * document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth; * document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。 * */ Viewport: function () { if (document.compatMode == "BackCompat") { var Height = document.body.clientHeight; } else { var Height = document.documentElement.clientHeight; } return Height; }, ScrollTop: function () { if (document.compatMode == "BackCompat") { var elementScrollTop = document.body.scrollTop; } else { var elementScrollTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop:document.documentElement.scrollTop; } return elementScrollTop; }, ElementViewTop: function (ele) { if (ele) { var actualTop = ele.offsetTop; var current = ele.offsetParent; while (current !== null) { actualTop += current.offsetTop; current = current.offsetParent; } return actualTop - this.ScrollTop(); } } }, //从所有相关元素中找出需要延时加载的元素 initElementMap: function () { var el = document.getElementsByTagName("img"); for (var j = 0, len2 = el.length; j < len2; j++) { //判断当前的img是否加载过了,或者有lazy_src标志 [未完成] if (typeof (el[j].getAttribute("lazy_src"))) { ele_obj.push(el[j]); download_count++; } } }, //防止多次加载 lazy: function () { if (!download_count) return; var innerHeight = this.getPosition.Viewport(); for (var i = 0, len = ele_obj.length; i < len; i++) { var t_index = this.getPosition.ElementViewTop(ele_obj[i]); //得到图片相对document的距上距离 if (t_index < innerHeight) { ele_obj[i].src = ele_obj[i].getAttribute("lazy-src"); delete ele_obj[i]; download_count--; } } }, //延迟加载,提高用户体验 slowLoad: function () { window.onscroll = window.onload = function () { setTimeout(function () { LazyLoad.prototype.lazy(); }, 1000) } } }; window.LazyLoad = LazyLoad;})();
0 0
- JavaScript懒加载代码
- 原生javascript图片懒加载效果代码。
- JavaScript重新加载页面代码
- JavaScript重新加载页面代码
- js异步加载javaScript代码
- javascript性能优化——懒加载提升代码效率
- JavaScript图片预加载代码,显示loading
- 火狐javascript加载xml的代码
- 页面加载完成执行javascript代码
- 关于动态加载html,CSS,javascript代码
- JavaScript图片预加载代码,显示loading
- JavaScript实现懒加载
- JavaScript ---- 懒加载demo
- javascript懒加载
- JavaScript 懒加载图片
- 【JavaScript】图片懒加载
- javascript 图片 懒加载、预加载
- JavaScript进阶--图片懒加载
- ROS进二阶学习笔记(1) TF 学习笔记3 -- TF Listener 编写 (Python)and Adding frame(Python)
- biliobs 编译问题
- Youki的Matlab命名规则
- ffmpeg源码分析--16.bmp格式分析及raw与bmp的相互转换
- JS函数与面向对象
- JavaScript懒加载代码
- java面试题--java基础--2
- opengl学习---1.ubuntu下搭建opengl开发环境及demo
- 长时间停留在calculating requirements and dependencies 的解决方案
- Android生命周期巩固笔记
- opengl学习---2.学习opengl的一些代码
- ue4 Xml文件读取小结
- 数据结构-线性表操作
- JS—特殊的对象~函数