js 一个关于图片onload加载的事

 更新时间:2013年11月10日 11:42:51   投稿:mdxy-dxy  
前几天一个项目让我头疼了很久,一个关于图片加载时的loading效果,因为不是太懂js,所以在网上各种找资料,但还是不理想,无赖苦心研究,终于有了一点眉目了,虽然个中还有一些道理不懂,至少目的达到了

 首先先明确一下我要的目的:

  当用户进入页面的时候,显示loading 加载图标,等最大的图片加载之后再opacity 图片;

  功能很简单,但是我没完全做出来;

  在做的时候,第一时间我自然想到了如下的方法:
  

复制代码 代码如下:

$(function(){
    $('.banner img').load(function(){
        console.log('已经加载')   
    });
});

熟话说的好呀,自信心太膨胀,到头来打击很大了;我以为这样就可以了,然后看了一遍之后拿给老大,老大点了两下,说一直不加载出来了,loading 转转转的就是出不来,我说不应该呀,然后自己试一下,果真如此。

接着找了一下资料,发现上面说是缓存的原因,因为load加载的时候有限浏览器会因为缓存不会触发load事件;没果;我就发了一个狠招:

复制代码 代码如下:

window.onload=function(){
    console.log('已经加载')
   
};

嘿嘿,这样还不行,我顶你个肺了;然后自信心又彭脏了,拿给老大,老大说行,第二天,客户来电说页面不加载,一个loading一直转转转的;我无语的回答他说:应该是你们那网速太慢了。。。你在等等,过了一下他答:说这样不行,虽然出来了,但等太久了;能不能让时间稍微少一点;

  无奈,我就只能各种压缩图片呀,压完之后,他还是觉得不太理想;老大说这样可以了,现在项目还只是扔在空间上,这空间本来很慢,如果他网速慢,加载的时间自然也慢了。

  老大说是这样说呀,任务还是没完成啊,绞尽脑汁,偶然看到一个外国网站的轮播图jq 插件,我下下来看了一下源码,接着就诞生出了以下招数:

复制代码 代码如下:

var oImg = $('.banner img:eq(0)');
    oImg.attr('src')+'?'+(new Date()).getTime();
    oImg.load(function(){
        console.log('已经加载')   
    });

  经过测试很正常,这个意思就是,在进入页面的时候,把图片的地址加一个时间,这样每次加载的时候就不会有缓存;而且也只是加载一张图,一张加载完之后其他就不管;

经过改正,也没跟老大说就传了上去;这次我也不敢大意,就一直在测,这一测就测出不是问题的问题了;

  因为页面加载的时候图片路径每次都会不同,所以每次都会去加载,消耗的时间跟第一次加载等同;那不就是说进入一次就要加载一次吗?

  我晕.........

  经过数十次的尝试,苦逼的我,终于找到了一个完败上面所有方法的办法 了:

复制代码 代码如下:

function imgloading(){
    console.log('已经加载')
}
//页面调用
<img src="1.jpg" onload="imgloading();"/>

这样就可以解决掉图片缓存了,还是会触发load事件;虽然我还不是具体理解这个;不过听别人说,这还是因为页面加载的原因;

众所周知网页是从上往下加载的;当加载到img的时候,我在ready里面获取img 元素其实是取不到的;当页面继续往下加载,经过img之后,当前的img就代表加载完毕了,既然加载完毕,我想都加载了,介个load还有用吗?

而上述的方法不难看出,页面仔加载到img 的时候碰到了onload方法,它就知道了这个图片必须要加载之后才出现。

好了。。。不知道有没有同行遇到了本苦逼这样的事情,是否找到了比这个更加完美的解决方案。。如果你有更完美的办法,请一定要留言告知呀,万分感谢,我总感觉还是有更加好的方法的。。。

相关文章

  • javascript 设为首页与加入收藏兼容多浏览器代码

    javascript 设为首页与加入收藏兼容多浏览器代码

    javascript 设为首页与加入收藏兼容多浏览器代码,不过由于ie7的特殊性,设为首页不能使用,不过其它基于ie内核的浏览器都是支持的。
    2011-01-01
  • JS实现的幻灯片切换显示效果

    JS实现的幻灯片切换显示效果

    这篇文章主要介绍了JS实现的幻灯片切换显示效果,涉及javascript通过扩展实现针对页面元素的动态切换操作相关技巧,需要的朋友可以参考下
    2016-09-09
  • js 闭包深入理解与实例分析

    js 闭包深入理解与实例分析

    这篇文章主要介绍了js 闭包,结合实例形式深入分析了JS闭包的概念、原理、使用方法与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • Bootstrap4一次重大更新 几乎涉及每行代码

    Bootstrap4一次重大更新 几乎涉及每行代码

    Bootstrap 4是一次重大更新,几乎涉及每行代码,这篇文章为大家分享了Bootstrap 4.0重大更新及亮点详细解读,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • js 无提示关闭浏览器页面的代码

    js 无提示关闭浏览器页面的代码

    js 无提示关闭浏览器页面的代码与函数需要的朋友可以参考下。
    2010-03-03
  • js表单元素checked、radio被选中的几种方法(详解)

    js表单元素checked、radio被选中的几种方法(详解)

    下面小编就为大家带来一篇js表单元素checked、radio被选中的几种方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 纯javascript实现分页(两种方法)

    纯javascript实现分页(两种方法)

    有的时候页面需要很多不同的表组成的数据,该怎么分页呢?使用数据库分页很简单,那么如何使用js实现分页呢?接下来,小编帮大家解决这个问题,需要的朋友一起来学习吧
    2015-08-08
  • Javascript中函数分类&this指向的实例详解

    Javascript中函数分类&this指向的实例详解

    其实想要彻底理解js中this的指向,不必硬背,这篇文章主要给大家介绍了关于Javascript中函数分类&this指向的相关资料,需要的朋友可以参考下
    2021-05-05
  • JavaScript 解析数学表达式的过程详解

    JavaScript 解析数学表达式的过程详解

    这篇文章主要介绍了JavaScript 解析数学表达式的过程详解,本文以一个的解题思路,来分享如何解决问题,解决的过程,可以作为解决工作中一般问题的通用思路,对js解析表达式相关知识感兴趣的朋友一起看看吧
    2022-06-06
  • IE8下关于querySelectorAll()的问题

    IE8下关于querySelectorAll()的问题

    在IE8的新特性里,提到了会支持querySelector()和querySelectorAll()方法,如何使用这里就不说了,只是记录下我在使用时遇到一个问题。
    2010-05-05

最新评论