浏览器
双核浏览器
游戏浏览器
高速浏览器
视频浏览器
IE浏览器
浏览器周边
手机浏览器
安卓游戏
音乐舞蹈
养成游戏
儿童游戏
仙侠手游
角色扮演
策略塔防
休闲益智
动作冒险
飞行射击
模拟经营
体育运动
赛车竞速
网络游戏
安卓软件
资讯阅读
生活服务
影音播放
购物理财
效率办公
趣味娱乐
交通出行
学习教育
摄影图像
在线音乐
系统工具
网络购物
聊天工具
安全杀毒
图片编辑
新闻资讯
软件资讯
游戏资讯
手机教程
手游攻略
游戏攻略
软件教程
IE专区
安卓专题
文章合集
电脑软件专题
安全软件
杀毒软件
系统安全
加密解密
防火墙
远程控制
木马查杀
影音软件
网络电视
视频播放
音乐播放
视频制作
音频编辑
录音录像
教育学习
外语学习
教育管理
早教启蒙
在线课堂
成人教育
资格考试
聊天社交
即时通讯
视频聊天
在线交友
变声器
表情包
办公软件
线上会议
文档管理
行业管理
考勤打卡
应用工具
输入法
下载工具
时钟日历
记事本
文件管理
计算器
编程开发
编程工具
JAVA相关
加壳脱壳
编程控件
数据库
网页源码
软件开发
补丁制作
系统美化
桌面制作
壁纸大全
系统主题
屏幕保护
桌面辅助
系统软件
系统优化
备份还原
系统检测
U盘工具
磁盘工具
驱动补丁
图文处理
图片素材
图像处理
图片制作
图片压缩
电子相册
抓图工具
其他软件
电子书籍
模拟器
辅助工具
交通出行
手机管理
其他工具
素材下载
字体素材
PPT素材
专区
文章合集
软件
游戏
浏览器
安卓专题
软件
游戏
浏览器
IEfans/ IE专区/ IE动态 /IE6,IE7下js动态加载图片不显示错误

IE6,IE7下js动态加载图片不显示错误

2023-06-26 16:30:02 编辑:匿名

先描述一下出现这种匪夷所思bug的背景:
我在页面加载的时候加载一堆小缩略图,a href="javascript:void(0);" onclick="switch_image('1.jpg')"img src="1.thumb.jpg" //a
这么多小的缩略图标签循环平铺下来,当单击小的图片时,动态加载大的图片显示,就类似于淘宝的商品查看图片。页面上有一个标签:
div id="pic-box"img src="" id="big-image" //div
为了节省流量,加快页面载入速度,先不加载大图,当用户单击小图时,动态加载一张大图显示。
复制代码 代码如下:
script
function switch_image(im)
{
document.getElementById('big-image').src=im;
}
/script

这种方式在IE6,7外所有的浏览器工作都正常,比如 IE8,Firefox, Opera, chrome, Safari。。。
就是IE6,7这两个浏览器加载不了,单击小图的时候,有时候你能加载,有时候加载一半,有时候不能加载。
我以为问题出在src这个东西上面,有可能IE6,7修改src不能正确加载图片,于是尝试把切换函数修改为:
document.getElementById('pic-box').innerHTML='img src="' + im + '" /';
IE6,7还是不行,于是想,有可能是图片被缓存了,那么加上随机数:
document.getElementById('pic-box').innerHTML='img src="' + im + '?r=' + Math.random() + '" /';
IE6,7依然不行。。
于是在想,可能是img用在innerHTML里面出现的问题,所以,改成用 appendChild
var img = document.createElement('img');
img.src= im;
document.getElementById('pic-box').appendChild(img);
还是不行。
再修改成用 new image来:

var img = new Image();
img.src= im;
document.getElementById('pic-box').appendChild(img);
还是不行。
百思不得其解,想,难道IE6,7不能动态加载图片吗?难道是img标签的问题?
既然这样就换成背景图加载吧,于是
document.getElementById('pic-box').style.background="url(" + im + ")";
IE6,7依然不行,上面这么多方法除IE6,7外其他都是正常的。
只有不停的Google,结果google到了:
IE6,7只有在用a onclick="switch_image()" href="javascript:void(0);"/a这样
动态加载图片是才会出现这种情况,google到的一篇说明:

有几个吃饱了没事儿干的老外反复试验发现这个问题是ie6中一个底层机制的bug,之后的版本已经解决了。
据说a href="javascript:void(0)"或者a href=#"这样使用a标签的话并不能阻止a标签最后触发一个什么行为,
导致ie6会错误的认为页面刷新或者重定向了,并且中断了当前所有连接,这样新图片的加载就被aborted了。
当然这些吃饱了没事儿干的老外们也提出了各种匪夷所思复杂无比的解决方案。

简单的方法有两个,一个是这样使用a标签a href="switch_image(); return false;",另外一个就是用div替换a标签来用。

实际上我发现不仅是IE6,IE7也同样有这个bug,还有,采用:a href="switch_image(); return false;"并不能解决问题。

所以推荐用其他标签替换a标签,最后一怒之下把所有的a标签替换为span,从此就再也没出现这样的问题了。

您可能感兴趣的文章:

  • Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
  • JS实现图片预加载无需等待
  • 关于JS判断图片是否加载完成且获取图片宽度的方法
  • jquery插件lazyload.js延迟加载图片的使用方法
  • js或者jquery判断图片是否加载完成实现代码
  • js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
  • 网页图片延时加载的js代码
  • 基于jquery的图片懒加载js
  • js图片延迟加载的实现方法及思路
  • js实现图片在未加载完成前显示加载中字样
  • Jquery图片延迟加载插件jquery.lazyload.js的使用方法
  • js 加载时自动调整图片大小
  • javascript预加载图片、css、js的方法示例介绍
  • JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析

相关推荐

浏览器更新