国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

修改jquery.lazyload.js實現頁面延遲載入

2019-11-21 00:02:01
字體:
來源:轉載
供稿:網友
雖然實現了延遲載入的視覺效果,但是通過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("<", "<");
tmp_str = tmp_str.replace(">", ">");
$(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="jquery.1.4.4.js"></script>
<script type="text/javascript" src="lazyload.jquery.js"></script>
<script>
$().ready(function(){
$(".switch_textarea").lazyload();
});
</script>
</head>
<body>
<H2>第1張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd2385fd03.jpg" /></textarea></div>
<H2>第2張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd2366adec.jpg" /></textarea></div>
<H2>第3張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd233b8da4.jpg" /></textarea></div>
<H2>第4張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd231a0fd8.jpg" /></textarea></div>
<H2>第5張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd22e68f56.jpg" /></textarea></div>
<H2>第6張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd22c55a5d.jpg" /></textarea></div>
<H2>第7張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd2278872b.jpg" /></textarea></div>
<H2>第8張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd224a0f6e.jpg" /></textarea></div>
<H2>第9張圖</H2>
<div class="div_style"><textarea class="switch_textarea"><img src="4bdfd21fb42bc.jpg" /></textarea></div>
</body>
</html>

測試頁面的html代碼中將所有要載入的圖片都放到了textarea標簽中,其目的就是防止頁面載入時這些img標簽向服務器發出請求,從而實現減少不必要的請求數,實際應用中也可以將不需第一次載入的html代碼放到textarea中。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乳源| 丹江口市| 昌图县| 泸州市| 漳平市| 双流县| 象州县| 河间市| 白沙| 炎陵县| 汕尾市| 嘉黎县| 阿克陶县| 英山县| 漳平市| 新巴尔虎左旗| 徐闻县| 上杭县| 绥宁县| 沁水县| 开鲁县| 永川市| 耿马| 灵山县| 邻水| 瓦房店市| 樟树市| 闽侯县| 孟州市| 乐平市| 洛扎县| 阜康市| 锡林郭勒盟| 岐山县| 延川县| 台东市| 耿马| 邵阳县| 筠连县| 东方市| 泸西县|