相思资源网 Design By www.200059.com
虽然实现了延迟载入的视觉效果,但是通过httpwatch等工具就可以看到,页面载入完毕后又发布很多空请求,而空请求就是由这些被替换过的img标签产生的,空请求也会一定程度上增加页面的打开时间,所以jquery.lazyload.js并未真生的实现页面延迟载入。
我对jquery.lazyload.js做了一些修改,实现了页面的延迟载入,不仅仅是图片,html代码同样可以延迟载入,大大减少了页面发出的请求数,提高了页面的打开速度。
修改后的jquery.lazyload.js代码如下:
jquery.lazyload.js
复制代码 代码如下:
/*
* Lazy Load - jQuery plugin for lazy loading images
*
* Copyright (c) 2007-2009 Mika Tuupola
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* http://www.appelsiini.net/projects/lazyload
*
* Version: 1.5.0
*
* Modify by @cnbaiying
* Modify time: 2010-12-16
*/
(function($) {
$.fn.lazyload = function(options) {
var settings = {
threshold : 0, //阀值
failurelimit : 0,
event : "scroll",
effect : "show",
container : window
};
if(options) {
$.extend(settings, options);
}
/* Fire one scroll event per scroll. Not one scroll event per image. */
var elements = this;
if ("scroll" == settings.event) {
$(settings.container).bind("scroll", function(event) {
var counter = 0;
elements.each(function() {
if ($.abovethetop($(this).parent(), settings) || $.leftofbegin($(this).parent(), settings)) {
/* Nothing. */
} else if (!$.belowthefold($(this).parent(), settings) && !$.rightoffold($(this).parent(), settings)) {
$(this).trigger("appear");
} else {
if (counter++ > settings.failurelimit) {
return false;
}
}
});
/* Remove image from array so it is not looped next time. */
var temp = $.grep(elements, function(element) {
return !element.loaded;
});
elements = $(temp);
});
}
this.each(function() {
var self = this;
/* When appear is triggered load original image. */
$(self).one("appear", function() {
if (!this.loaded) {
//alert($(self).parent().html($(self).html()));
var tmp_str = $(self).html();
tmp_str = tmp_str.replace("&lt;", "<");
tmp_str = tmp_str.replace("&gt;", ">");
$(self).parent().append(tmp_str);
self.loaded = true;
}
});
/* When wanted event is triggered load original image */
/* by triggering appear. */
if ("scroll" != settings.event) {
$(self).bind(settings.event, function(event) {
if (!self.loaded) {
$(self).trigger("appear");
}
});
}
});
/* Force initial check if images should appear. */
$(settings.container).trigger(settings.event);
return this;
};
/* Convenience methods in jQuery namespace. */
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */
$.belowthefold = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).height() + $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top + $(settings.container).height();
}
return fold <= $(element).offset().top - settings.threshold;
};
$.rightoffold = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).width() + $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left + $(settings.container).width();
}
return fold <= $(element).offset().left - settings.threshold;
};
$.abovethetop = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top;
}
return fold >= $(element).offset().top + settings.threshold + $(element).height();
};
$.leftofbegin = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left;
}
return fold >= $(element).offset().left + settings.threshold + $(element).width();
};
/* Custom selectors for your convenience. */
/* Use as $("img:below-the-fold").something() */
$.extend($.expr[':'], {
"below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})",
"above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})",
"right-of-fold" : "$.rightoffold(a, {threshold : 0, container: window})",
"left-of-fold" : "!$.rightoffold(a, {threshold : 0, container: window})"
});
})(jQuery);

下面是测试页面的html代码
复制代码 代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="汽车图片,汽车图片壁纸, 汽车图片桌面, 汽车图片库,汽车图片大全" />
<meta name="description" content="汽车图片,网上车市汽车图片大全频道为网友提供各种汽车图片及美女图片下载,各种车型汽车图片桌面,汽车图片壁纸,车展美女图片,美女车模图片等。精彩图片,尽在网上车市。" />
<title>【汽车图片|汽车美女图片-汽车图片大全】-网上车市</title>
<style>
.switch_textarea {display:none;}
.div_style {width:600px; height:400px; }
</style>
<script type="text/javascript" src="/UploadFiles/2021-04-02/jquery.1.4.4.js"><script type="text/javascript" src="/UploadFiles/2021-04-02/lazyload.jquery.js"><script>
$().ready(function(){
$(".switch_textarea").lazyload();
});
</script>
</head>
<body>
<H2>第1张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd2385fd03.jpg"><H2>第2张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd2366adec.jpg"><H2>第3张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd233b8da4.jpg"><H2>第4张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd231a0fd8.jpg"><H2>第5张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd22e68f56.jpg"><H2>第6张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd22c55a5d.jpg"><H2>第7张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd2278872b.jpg"><H2>第8张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd224a0f6e.jpg"><H2>第9张图</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="/UploadFiles/2021-04-02/4bdfd21fb42bc.jpg"></body>
</html>

测试页面的html代码中将所有要载入的图片都放到了textarea标签中,其目的就是防止页面载入时这些img标签向服务器发出请求,从而实现减少不必要的请求数,实际应用中也可以将不需第一次载入的html代码放到textarea中。
标签:
jquery,lazyload

相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com

评论“修改jquery.lazyload.js实现页面延迟载入”

暂无修改jquery.lazyload.js实现页面延迟载入的评论...

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?