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 13 Javascript
jquery cookie的用法总结
Nov 18 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
javascript最基本的函数汇总
Jun 25 Javascript
Javascript中的几种继承方式对比分析
Mar 22 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
微信小程序实现带刻度尺滑块功能
Mar 29 Javascript
Vuejs 单文件组件实例详解
Feb 09 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 Javascript
ECharts transform数据转换和dataZoom在项目中使用
Dec 24 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
Javascript的一种模块模式
2010/09/08 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
python字典排序实例详解
2015/05/20 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Django app配置多个数据库代码实例
2019/12/17 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
Python多线程thread及模块使用实例
2020/04/28 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
12月小学生校园广播稿
2014/02/04 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2014年工会工作总结
2014/11/12 职场文书
小学语文复习计划
2015/01/19 职场文书
城管个人总结
2015/02/28 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android