jquery和ie和加载图像的问题

时间:2009-10-22 05:56:05

标签: javascript html image

我有一个由三个部分组成的网页,脚本,样式和正文。身体只是图像表 - 问题是,当你第一次加载网站时,所有的图像加载一个在另一个上面 - 一个真正的混乱。图像应该都是不可见的,只有在点击某些单词时才会出现 - 这都是用javascript完成的。一旦所有图像加载,它们都会消失,然后网站按照预期的方式工作。就好像所有图像都是首次可见,然后javascript开始并隐藏它们,因为它们被标记为javascript隐藏的div id。我没有safari 4.0.3和mozilla的这个问题 - 但我确实有旧版本的safari这个问题。有什么方法可以防止图像最初被看到?

3 个答案:

答案 0 :(得分:1)

您可以预先缓存图像并仅在需要时显示图像,而不是下载图像然后隐藏它们。

image1 = new Image();
image1.src = "..../../...jpg";
image2 = new Image();
image2.src = "..../../...jpg";
image2 = new Image();
image2.src = "..../../...jpg";

然后当您需要图像时,将它们添加到src

e.g。

<img id='img1'onMouseClick="this.src=image1.src" />

如果您正在使用jQuery,那么最好为它获取一些插件。

答案 1 :(得分:0)

默认情况下,尝试使用CSS隐藏图像。 CSS规则比JavaScript更快适用 通常的做法是在身体上添加一个类。例如,有css:

body img {display:none;}
body.JSLoaded img {display:inline;}

默认情况下隐藏图像。加载JavaScript时,将JSLoaded添加到正文中,然后会显示图像 这也是在没有JavaScript的情况下优雅降级客户端网站的好方法。

答案 2 :(得分:0)

预加载图片的非JavaScript方式只是将它们放在内联样式的隐藏div中。

<div id="preload" style="height:1px;overflow:hidden;width:1px;padding:1px;">
  <img src="image1.jpg" alt="" />
  <img src="image2.jpg" alt="" />
  <img src="image3.jpg" alt="" />
</div>

这将加载所有图像,并将它们保存在缓存中,以便稍后在其他地方显示它们。

我没有做display:none;因为某些浏览器倾向于不在未显示的dom元素中加载图像。这应该使所有图像都不在视野范围内。