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


Posted in Javascript onNovember 10, 2013

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

当用户进入页面的时候,显示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 全等号运算符使用说明
May 31 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
Jul 12 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
javaScript使用EL表达式的几种方式
May 27 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
js实现上传图片预览的方法
Feb 09 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
js实现延迟加载的几种方法
Apr 24 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
Jan 31 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
Nov 10 #Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 #Javascript
面向对象设计模式的核心法则
Nov 10 #Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 #Javascript
JS增加行复制行删除行的实现代码
Nov 09 #Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 #Javascript
js实现简单登录功能的实例代码
Nov 09 #Javascript
You might like
PHP资源管理框架Assetic简介
2014/06/12 PHP
初识Laravel
2014/10/30 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python requests 测试代理ip是否生效
2018/07/25 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python中dict使用方法详解
2019/07/17 Python
python实现指定ip端口扫描方式
2019/12/17 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
七年级政治教学反思
2014/02/03 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
保护环境的建议书
2014/03/12 职场文书
大二学习计划书范文
2014/04/27 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
学校师德师风整改措施
2014/10/27 职场文书
2014年政工师工作总结
2014/12/18 职场文书
公司酒会致辞
2015/07/30 职场文书