博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

测试img在不显示时是否加载?

Posted on 2014-05-16 16:22  PHP-张工  阅读(2518)  评论(0编辑  收藏  举报

一直搞不明白,隐藏的元素的背景图,在页面加载时,是否自动加载?

img隐藏时,图片会加载吗?

测试代码如下:

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>img load</title>
	<style>
	.divImg {background:url(cssImg1.jpg);}
	.divImg {background:url(cssImg2.jpg);}
	.divNullImg {background:url(cssNullImg.jpg);}
	.divImgNone {display:none;}
	.divImgNone {background:url(cssNoneImg1.jpg);}
	.divImgNone div {background:url(cssNoneImg2.jpg);}
	#divNone {background:url(cssNoneImg3.jpg);}
	.divHoverImg:hover {background:url(cssHoverImg1.jpg);}
	</style>
	</head>	
<body>

<img src="img.jpg" />
<img src="cssImg2.jpg" />
<img src="ImgNone.jpg" style="display:none;" />

<div id="divNone" style="display:none; background:url(divNoneBack1.jpg);">
<img src="divNoneImg1.jpg" />
<div style="background:url(divNoneBack2.jpg);"></div>
</div>
<input type="button" value="显示隐藏" onclick="document.getElementById('divNone').style.display = 'block';" />

<div class="divImg">
img
</div>

<div class="divImgNone">
<img src="divNoneImg2.jpg" />
img none
<div></div>
<div style="background:url(divNoneBack3.jpg);"></div>
</div>

<div class="divHoverImg">
test Hover
</div>

<script>
var img = new Image();
img.src = 'jsImg.jpg';
document.getElementById('divNone').style.backgroundImage = 'url(jsNoneImg.jpg)';
</script>

</body>
</html>

测试了chrome33 和 IE7 使用Fiddler 监控

测试结果如下:

结果很复杂,IE和chrome下hover样式的背景图,只有鼠标悬浮时才加载。chrome下隐藏的背景不加载,IE下隐藏的背景要加载。

结论chrome:
  • 隐藏的元素及其包含的背景图不会加载(样式隐藏元素的当前背景会加载)。
  • hover的背景图不会加载,当hover时才加载。
  • 隐藏的img或img在隐藏的元素内也会加载。
  • 没有匹配的样式中,包含的背景不会显示。
  • 使用JS给隐藏的元素设置背景图时,会加载背景图。
结论IE:
  • hover的背景图不会加载,当hover时才加载。
  • 没有匹配的样式中,包含的背景不会显示。