ie6 img onload
作者:xlingfairy 来源:dajiaozi.com 发布时间:2009-04-08 17:23:00
IE>6 及其它浏览器不在此文论述范围内。
img 的 onload 事件,是当图片加载完成之后,就处触发。img.complete 这个属性标识着这个图片是否以加载完成。
一般情况下,new Image(),onload 应该写在 img.src="/xxx" 的前面,这样可以避免一部分情况(部分浏览器)下,onload事件不触发,比如 图片以存到本地缓存内,第二次加载这个图片,速度非常快,还来不及触发 onload。如果接合 img.complete 这个东东来处理,基本上所有的上述情况都可以排除掉。但是有一个例外:IE6
假如我要做一个幻灯片,不是通过改变 图片的路径 ,而是 用 new Image(),当然,在 new 之前,先把图片的容器的内容清空,如:
objs.showArea.className = 'showArea';
objs.showArea.innerHTML = "";
var img = new Image();
img.onload = img_loaded;//这是个回调函数
img.src = vars.normals[idx];
objs.showArea.appendChild(img);
在除IE6之外的浏览器里运行,效果非常满意,但是换到 ie6 下, img_loaded 这个回调却有80%的机率不调用。为了找到原因,我来来回回折腾了N长时间,才用 setTimeout 解决这个问题:
$.show = function(idx){
。。。
if(JObj.Browser.ie && JObj.Browser.version <= 6)
setTimeout(JObj.doFunction(_show,idx),0);////////////
else
_show(idx);
。。。
}
var _show = function( idx ){
var img = new Image();
img.onload = img_loaded;
img.src = vars.normals[idx];
objs.showArea.appendChild(img);
/*if(img.complete){
img_loaded(null,img);
}*/
vars.idx = idx;
objs.btnOrg.href = vars.normals[vars.idx];
objs.tb.setPosition(idx);
}
这个 _show() 原来是要直接调用的函数 show().
另外,我用 styleSheet.addImport 这个方法来加载 css ,发现在IE6下,请求发出后,随即又终止了(aborted),木有办法,只好换另外一个方法:createStyleSheet
$.loadCss = function(cssFile) {
if(document.createStyleSheet)
document.createStyleSheet(cssFile);
else{
if (styleSheet == null) {
var style = $$.$c('STYLE');
$$.$tag("HEAD")[0].appendChild(style);
styleSheet = style.styleSheet || style.sheet;
}
styleSheet.insertRule("@import url('" + cssFile + "');", styleSheet.cssRules.length);
}
}
猜你喜欢
- 序言那个猥琐的家伙整天把个U盘藏着当宝,到睡觉了就拿出来插到电脑上。我决定想个办法看他U盘里都藏了什么,直接去抢U盘是不可能的,骗也是不可能
- 这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题vue-devtools是什么?vue
- 被AJAX中DOM的操作郁闷了好几天,今天总算搞明白了,自学就是苦啊,苦的一把鼻涕一把泪的,把教训些出来,给后来者提个醒,老鸟就不要看了。下
- vue页面的打印和下载PDF(加水印)vue项目页面的打印打印的不用说,调用 window.print() 的方法即可;注意点:如果用到背景
- $r = new ReflectionClass($this); Zend_Debug::dump($r->getConstants(
- 本文实例讲述了C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法。分享给大家供大家参考。具体如下:这个
- 如下所示://首先定义一个构造函数Hellofunction Hello(){alert(1);}//定义一个函数表达式var getNam
- Ubuntu 18.04下1、安装python 2._版本,输入 sudo apt install python命令行输入 python或p
- 本文实例讲述了Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能。分享给大家供大家参考,具体如下:因为需要使用
- 如下:数据文件:上海机场 (sh600009)24.113.58东风汽车 (sh600006)74.251.74中国国贸 (sh600007
- 1.基于OpenCV的形状检测Python版本目录结构1.1.定义我们的形状检测器类ShapeDetector开始定义我们的 ShapeDe
- Python是一门非常酷的语言,因为很少的Python代码可以在短时间内做很多事情,并且,Python很容易就能支持多任务和多重处理。py&
- 这里提供三种方法:1,使用正则表达式Function regKillHTML(str) &nb
- 一、tensor加减乘除加法操作import torchx = torch.randn(2, 3)y = torch.randn(2, 3)
- <?phpfunction map($fun, $list,$params=array()){ $
- 关于python3中的追加写入excel问题,这个问题坑了我几小时,其实加一个参数即可。因为之前有写好的excel,想追加写入,但是写入后却
- 错误信息Attempting to use uninitialized value input_producer/input_produce
- import numpy as npimport pandas as pdimport matplotlib.pylab as pltif
- 一、环境介绍Python版本 : Python3.8开发工具 : Pycharm 21第三方库 : requests还会用到的是 Pytho
- privot多对多关系的中间表。PT5框架会自动把privot带上。我们需要隐藏,因为我们不需要privot,而且pritvot也不在我们模