标签:页面 服务 多次 路径 else family 高度 请求 卡顿
参考链接:
处理图片预加载时设置img的src属性和img的onload事件的位置前后顺序关系
一、懒加载
var lazyLoad = (function(){ var clock; function init(){ //监听浏览器滚动事件,持续滚动后停留200ms才会触发checkShow() $(window).on("scroll", function(){ if (clock) { clearTimeout(clock); } clock = setTimeout(function(){ checkShow(); }, 200); }) checkShow(); } function checkShow(){ $(".lazyload img").each(function(){ var $cur =$(this); //若某图片已经显示,则return if($cur.attr(‘isLoaded‘)){ return; } //若某图片应该显示却还未显示,则将其显示出来 if(shouldShow($cur)){ showImg($cur); } }) } //判断图片是否应该显示 function shouldShow($node){ var scrollH = $(window).scrollTop(), //窗口的垂直滚动条位置 winH = $(window).height(), //窗口高度 top = $node.offset().top; //图片相对于整个文档的偏移top坐标 if(top < winH + scrollH){ return true; }else{ return false; } } //将图片显示出来 function showImg($node){ $node.attr(‘src‘, $node.attr(‘data-src‘)); $node.attr(‘isLoaded‘, true); } return { init: init } })() lazyLoad.init();
二、预加载
function loadImage(url, callback) { var img = new Image(); //创建一个Image对象,实现图片的预下载 img.onload = function () { //图片下载完毕时调用callback函数。 callback(img); }; img.src = url; };
function loadImage(url, callback) { var img = new Image(); //创建一个Image对象,实现图片的预下载 img.onload = function () { //图片下载完毕时将img.onload设为null,并异步调用callback函数。 img.onload = null; callback(img); }; img.src = url; };
标签:页面 服务 多次 路径 else family 高度 请求 卡顿
原文地址:http://www.cnblogs.com/xuehaoyue/p/7172053.html