overflow 能触发IE7的hasLayout 不能触发IE6的hasLayout
测试一下
<!DOCTYPE HTML>
<html>
<head>
<title>hasLayout属性</title>
<meta http-equiv="content-type" content="text/html; charset=GB18030">
<style type="text/css">
div{border:1px solid red;}
.hasLayout{overflow:auto;border:1px solid green;}
.log{margin-top:10px;border:1px solid #5EAFDE;height:200px;width:300px;}
</style>
</head>
<body>
<div class="hasLayout" id="a">
a
</div>
<div id="b">
b
</div>
<div id="log" class="log">
</div>
<script type="text/javascript">
var a = document.getElementById("a");
var b = document.getElementById("b");
//a.currentStyle.hasLayout属性显示该元素是否拥有布局
var a_hasLayout = a.currentStyle.hasLayout;
var b_hasLayout = b.currentStyle.hasLayout;
document.getElementById("log").innerHTML = "a.hasLayout:"+a_hasLayout+"\nb.hasLayout:"+b_hasLayout+
"\na.clientWidth:"+a.clientWidth+" a.clientHeight:"+a.clientHeight+"\nb.clientWidth:"+b.clientWidth+" b.clientHeight:"+b.clientHeight;
</script>
</body>
</html>
下面是IE6/7/8对比
说明:
1、元素的currentStyle.hasLayout属性显示该元素是否拥有布局
2、IE6/7中假如元素没有拥有布局,他们的clientWidth和clientHeight始终为0,编程的时候需要注意