jQuery lazyload 的重复加载错误以及修复方法

分析代码也可以知道。
最主要的原因是 写在页面上的 <img src="the_big_img_toLoad.jpg" />一经加载,就去向服务器申请图片地址,加载大图片。
如果想实现原定的效果,则 写在页面上的待加载地址 必须不能是大图片的地址,而我们可以将真正的图片地址数据 存储在alt属性中。
正确的例子如下:


代码如下:

<a href="#nogo"><img alt="http://www.jb51.net/comstyles/img200-150-3.jpg" src="http://sc.jb51.net/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.jb51.net/comstyles/img200-150-4.jpg" src="http://sc.jb51.net/style/img/spacer.gif" alt="200-150" /></a>

对原来的 jquery.lazyload.js我们也需要做一点改动:


代码如下:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="lazyload.js"></script>
<script type="text/javascript"> //初始化代码
$(document).ready(function(){
$("#lazy1 img,#lazy2 img").lazyload({
placeholder : "http://sc.jb51.net/style/img/spacer.gif",
effect : "fadeIn"
});
});
</script>

完整实例如下:


代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style type="text/css">
img{ display:block; border:2px solid #ccc; margin:0 0 10px;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="lazyload.js"></script>
<script type="text/javascript"> //初始化代码
$(document).ready(function(){
$("#lazy1 img,#lazy2 img").lazyload({
placeholder : "http://qsl.cn/style/img/spacer.gif",
effect : "fadeIn"
});
});
</script>
</head>
<body>
<div style=" height:900px; width:400px; background:#eee;">
<a href="#nogo"><img src="http://www.titan24.com/comstyles/img200-150-2.jpg" alt="200-150" /></a>
第一屏高度为900px,滚动到下面的时候,相应图片才开始加载
</div>
<div id="lazy1" style="width:350px; margin-bottom:340px;">
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/ad400-300.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="400-300" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img200-150-1.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img200-150-2.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
</div>
<div id="lazy2" style="width:350px;">
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img200-150-3.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img200-150-4.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img560-300-1.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img560-300-2.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img560-300-3.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
<a href="#nogo"><img alt="http://www.titan24.com/comstyles/img560-300-4.jpg" src="http://qsl.cn/style/img/spacer.gif" alt="200-150" /></a>
</div>
</body>
</html>

测试可知 是真正的按需加载。而不是像之前,先加载了,滚动到相应位置 还又加载了一次。
Firebug的眼睛还是雪亮的。

(0)

相关推荐

  • jQuery lazyLoad图片延迟加载插件的优化改造方法分享

    jQuery lazyLoad.js插件 是一款基于jquery框架,可以"实现"图片延迟加载的插件.请注意,我用了双引号,因为从我自己实际调试的结论来说呢,并不会延迟加载,而是先下载,然后通过改变<img>的src属性来隐藏原来的图片. 我们先来看看他的代码吧! 复制代码 代码如下: <script type="text/javascript" src="/static/jssrc/lazyload.js"></s

  • jQuery.lazyload+masonry改良图片瀑布流代码

    实现方法如下:(这里只发jquery了,相关html代码请各位自己脑补一下吧,我就不发了,哈哈) /** * 自动刷新 * @type {*|jQuery|HTMLElement} */ var $container = $('#main'); $container.imagesLoaded( function(){ $container.masonry({ itemSelector : '.item', columnWidth:205, gutterWidth:10, isAnimated:

  • Jquery图片延迟加载插件jquery.lazyload.js的使用方法

    最新版的jquery.lazyload.js已不再是伪的延迟加载了 一.请按照基本使用方法说明设置 复制代码 代码如下: //载入JavaScript 文件<script src="jquery.js" type="text/javascript"></script><script src="jquery.lazyload.js" type="text/javascript"></sc

  • jquery.lazyload 实现图片延迟加载jquery插件

    什么是ImageLazyLoad技术 在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的交互.尤其是对于高清晰的图片,占的几M的空间.ImageLazyLoad技术就是,当前可见界面的图片是加载进来的,而不可见页面(通过滚动条下拉可见)中的图片是不加载的,这样势必会引起速度上质的提升. 怎么实现ImageLazyLoad 一.使用JQuery插件 ,插件名: jquery.lazyload(7kb大小),压缩后(3kb大小) 在线压缩js http://closure-compil

  • 详解jQuery lazyload 懒加载

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的. 在包含很多大图片长页面中延迟加载图片可以加快页面加载速度. 浏览器将会在加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担. Demo页面: 基本选项 淡入效果 对不支持JavaScript浏览器的降级处理 水平滚动 容器内水平滚动 容器内垂直滚动

  • jquery插件lazyload.js延迟加载图片的使用方法

    如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动情况来加载你需要看的图片,然后它才会从后台请求下载图片,最后显示出来.通过这个插件,可以在需要显示图片的时候,才下载图片,从而可以减少服务器的压力,提高页面加载速度. Lazy Load 插件原理 修改目标img元素的src属性为orginal属性,从而中断图片的加载.检测滚动状态,然后把网页可视区域中的img的src属性还原然后加载图片,从而制造了一种缓冲加载的效果.代

  • 修改jquery.lazyload.js实现页面延迟载入

    虽然实现了延迟载入的视觉效果,但是通过httpwatch等工具就可以看到,页面载入完毕后又发布很多空请求,而空请求就是由这些被替换过的img标签产生的,空请求也会一定程度上增加页面的打开时间,所以jquery.lazyload.js并未真生的实现页面延迟载入. 我对jquery.lazyload.js做了一些修改,实现了页面的延迟载入,不仅仅是图片,html代码同样可以延迟载入,大大减少了页面发出的请求数,提高了页面的打开速度. 修改后的jquery.lazyload.js代码如下: jquer

  • Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件

    从网上下载来的版本多多少少都有些BUG,尤其是加载后在IE6和IE7下图片闪动是个大问题,在网上查了很久,也没有找到相关的解决方案.没解决方案,就得发挥咱DIY的精神,自己想法解决,分析了BUG,理了理思路,结合前段时间我做弹出窗口特效的方法,解决了Jquery.LazyLoad.js的兼容问题,现将思路和方法与大家分享一下. 解决思路大致是两点,一是从LazyLoad本身的滤镜参数下手,发现有一个参数在IE6和IE7是可以用的,就是show,那么在IE6和IE7下用这个特效:二是IE8以上(包

  • jquery lazyload延迟加载技术的实现原理分析

    前言 懒加载技术(简称lazyload)并不是新技术,它是js程序员对网页性能优化的一种方案.lazyload的核心是按需加载.在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页,淘宝网,QQ空间等.因此掌握lazyload技术是个不错的选择,可惜jquery插件lazy load官网(http://www.appelsiini.net/projects/lazyload)称不支持新版浏览器. lazyload在什么场合中应用比较合适? 涉及到图片,falsh资源,ifram

  • jQuery lazyload 的重复加载错误以及修复方法

    分析代码也可以知道. 最主要的原因是 写在页面上的 <img src="the_big_img_toLoad.jpg" />一经加载,就去向服务器申请图片地址,加载大图片. 如果想实现原定的效果,则 写在页面上的待加载地址 必须不能是大图片的地址,而我们可以将真正的图片地址数据 存储在alt属性中. 正确的例子如下: 复制代码 代码如下: <a href="#nogo"><img alt="http://www.jb51.ne

  • jQuery 重复加载错误以及修复方法

    最近在做项目的时候,遇到个问题: 父页面引入子页面,子页面引入jQuery.js文件,父页面JS依赖jQuery.js ,出现问题是,总提示JS对象无效.猜测jQuery加载顺序不是最早造成的. 父页面: 子页面: 从这里看 ,jQuery.js 是最早的咯,可是为什么其它的js都提示 属性无效呢. 后面用 IE11 的F12工具查看 JS 的加载顺序,发现 jQuery 是最早加载的,只是加页面加载完毕后,突然有个请求又加载了一次 jQuery. 原因是如下代码: 复制代码 代码如下: $(f

  • jQuery is not defined 错误原因与解决方法小结

    通常出现这种状况有几种解决方法: 1:查看是否引入jquery文件 就算引入了文件了是不是通过一些整站下载器之类的软件下载的,都会出现问题,建议用迅雷到官方下载即可. 2:查询路径是否错误,可以在页面源码中点击js文件路径. 有时候js里面会自动加入一些路径,导致路径错误 3: JS是解释型语言,是根据标签引用分块顺序执行的,$是jQuery中的产生的对象,需要用的话,必须将jquery.js文件放在使用它的JS前面. 将jQuery库放在依赖于jQuery的JavaScript脚本之前,并且将

  • jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法

    jQuery Cannot read property 'msie' of undefined错误的解决方法 最近把一个项目的jQuery升级到最新版,发现有些页面报如下错误 Cannot read property 'msie' of undefined 上jQuery网站上搜了一下,原因是$.browser这个api从jQuery1.9开始就正式废除,js代码里只要用到$.browser就会报这个错.具体说明参见jQuery官方说明. 楼主顺便扩展阅读了一下,发现jQuery 1.9把所有在

  • CentOS 6.0 启动时出现fstab错误时的修复方法

    CentOS启动时,出现了fstab 中 /dev/loop1 设备的读取失败,结果,呵呵,系统进入了recovery 模式,输入root密码之后,想修改fstab,结果发现不行,后来找了半天, 发现可以使用: #mount -o remount,rw / 之后,fstab就可以修改了. 以上这篇CentOS 6.0 启动时出现fstab错误时的修复方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Jquery uploadify 多余的Get请求(404错误)的解决方法

    在使用jquery uploadify时如果不设置button_image_url参数,就会出现一些多余的get请求,甚至报404的错误,这是该插件的一个bug,官方给出的解决方案如下: 找到如下代码: this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url); this.settings.button_image_url = SWFUpload.completeURL(this.settings.but

  • jquery.validate提示错误信息位置方法

    本文实例讲述了jquery.validate提示错误信息位置方法.分享给大家供大家参考,具体如下: 好长时间没有用jquery.validate.js这个插件了,忘得差不多了.唉,好东西还是要经常拿出来看看的,今天用jquery.validate来做一个小东西,遇到一个问题,就是错误提示信息的位置问题,如果知道的话,很简单.以前遇到过,可是忘了,现在标记一下,将来在忘了,在回过头看看.俗话说的好,好记性不如烂笔头. 举个例子,大家就知道怎么回事了. rules: { name:{ require

随机推荐