img的complete和onload
HTML DOM complete 属性
定义和用法:
complete 属性可返回浏览器是否已完成对图像的加载。
如果加载完成,则返回 true,否则返回 fasle。
语法:
imageObject.complete
Image onload 事件
定义和用法:
onload 事件在图片加载完成后立即执行。
语法
onload="JavaScriptCode"
complete只是HTMLImageElement对象的一个属性,而onload则是这个Image对象的load事件回调,前者不能准确的在事件发生时进行异步回调并且在浏览器的兼容性上也有些问题。
这两者,只有img.complete可以判断图片加载完成,img.onload并不能判断图片是否加载完,而是在加载完毕之后,直接运行onload绑定的函数。
img加载完成就会解除onload事件,src是异步加载图片的,如果在绑定事件前就已经加载完成,onload事件不会触发。img.complete是一直都有的属性,加载完成后为true。
img.onload是当一张图片被加载完成后所触发的事件
实现图片显示功能;
<div>
<img id="img"/>
</div>
js部分:img.src="图片";
img.onload=showImg;
function showImg(){
代码部分。。。。
}
对于 complete 属性来讲,IE是根据图片是否显示过来判断,就是说当加载的图片显示出来后,complete 属性的值才为 true ,否则一直是 false ,和以前是否加载过该张图片没有关系,即和缓存没有关系!这里要注意,显示与否和img.style.display无关;
JS部分: alert(img.complete);----->false
img.src="图片";
alert(img.complete);------->//如果上面“图片”获取的时间比JS代码顺序执行的时间要长,那么这里就是false,否则就是true。
下面看一个例子:
<input type="button" name="" value="载入图片" onclick="addImg('tt.jpg')" />
<script type="text/javascript">
function addImg(isrc){
var Img = new Image();
Img.src = isrc;
Img.onload = function () {
document.body.appendChild(Img);
}
}
</script>
当页面打开后,点击按钮后,会显示tt.jpg,但是如果重复点击会怎样呢?在IE中,除了第一次加载 图片时候显示正常,之后再点击就没有反应了,刷新也一样。FF中,每点击一次加载一张该图片。而这是什么原因呢?是因为在IE中只执行了一次onload或者是缓存的问题吗?先改写一下代码,
<input type="button" name="" value="载入图片" onclick="addImg('tt.jpg')" />
<script type="text/javascript">
function addImg(isrc){
var Img = new Image();
Img.onload = function (){
document.body.appendChild(Img);
}
Img.src = isrc;
}
</script>
现在再点击图片,就正常了,由此可见不是因为IE没有触发onload事件,而是因为IE中加载缓冲区的速度太快,以至于没有运行到img.onload的时候,图片已经被加载完毕了。因此,可以先告诉浏览器如何处理这张图片,然后再制定这张图片的来源。一般情况下,可以用complete来判断图片是否加载完毕。对于 complete 属性来讲,IE是根据图片是否显示过来判断,就是说当加载的图片显示出来后,complete 属性的值才为true ,否则一直是false ,和以前是否加载过该张图片没有关系,即和缓存没有关系!可以写如下的函数来做到各个浏览器中预加载图片的兼容性。
var imgLoad = function (url) {
var img = new Image();
img.src = url;
if (img.complete) {
callback(img.width, img.height);
} else {
img.onload = function () {
callback(img.width, img.height);
img.onload = null;
};
};
};

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
前端做模糊搜索
我们先看一下效果图: 这是搜索关键字cfg时,会自动匹配到config方法 同样,我们再看另一个例子 通过关键字bi会匹配到好几个结果 这个和一些编辑器的搜索功能很像,比如sublime text,不需要知道关键字的完整拼写,只需要知道其中的几个字母即可。 那么这个功能在前端我们如何去实现呢? 不考虑性能的话,我们可以用正则简单实现如下: 把关键字拆分,加入(.?),如cfg最终为 (.?)(c)(.?)(f)(.?)(g)(.*?),然后拿这个正则去测试要搜索的列表,把符合要求的选项给拿出来即可 考虑到要高亮结果,我们还要生成对应的替换表达式,最后的函数如下 var escapeRegExp = /[\-#$\^*()+\[\]{}|\\,.?\s]/g; var KeyReg = (key) => { var src = ['(.
- 下一篇
网站安全解决方案分享被提示百度网址安全中心提醒您:该页面可能已被非法篡改!
近期受世界杯的影响,我们Sinesafe接过很多中小企业网站频繁的被黑客入侵篡改了快照内容的网站安全问题导致打开网站被提示博彩页面,在搜索引擎中会被提示百度网址安全中心提醒您:该页面可能已被非法篡改!主要客户网站问题基本都是反复性质的篡改,手动清理删除掉代码只能解决当前问题,没过几天就又被篡改了内容,而且经常是篡改首页顶部的代码. 1.网站快照被劫持问题分析与解决方案处理过程 下面我们分析下客户网站,客户是Linux系统的单独服务器,网站采用的是discuz论坛程序+uchome (PHP+mysql数据库架构)由于客户的网站在百度权重很高且权重为6,所以百度收录页面也是秒收的,网站关键词的排名也很靠前。网站被篡改跳转到博彩,以及收录一些博彩内容快照的攻击问题,困扰了客户整整三年,总是反反复复的被篡改跳转。而且这些网站篡改都是隐蔽性非常强的,从百度搜索引擎搜索过来的手机用户,会直接跳转到博彩网站,直接在输入网址则不会跳转。从我们这么多年网站安全维护的经验来看,这个黑客是故意做了浏览器的判断,来让网站跳转到博彩上去,让网站的管理员无从下手寻找被跳转的踪迹,通过我们sinesafe的安全审...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境