Показать сообщение отдельно
  #4 (permalink)  
Старый 01.11.2008, 19:31
Аспирант
Отправить личное сообщение для EugenyK Посмотреть профиль Найти все сообщения от EugenyK
 
Регистрация: 17.03.2008
Сообщений: 64

Разбирался сегодня с размерами html-объектов. Вот этот момент меня удивил. Ниже полный HTML. Если его запустить, то :

FF3.0 выдаст правильный offsetHeight и правильно посчитает стилевую height (18+5=23)

IE6.0 мало того, что не станет считать стиль и выдаст auto, ещё и врёт на 1px для offsetHeight.

Либо я что-то не учёл?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>Title</title>
	<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
	<meta name="robots" content="noindex, nofollow" />
	<style type="text/css">
		body {
			font-size: 11pt;
			margin: 0px;
			padding: 0px;
			}
		.s {
			background: red;
			padding-top: 5px;
			}
	</style>
	<!--[if IE]>
	<style type="text/css">
		html {
			padding: 0px;
			margin: 0px;
			}
	</style>
	<![endif]-->
</head>
<body>
	<div class='s' id='r'>rrr</div>
	<script type='text/javascript'>
		function getCSSVal(elem, prop){
			if (typeof elem != 'object') elem = document.getElementById(elem)

			if(document.defaultView && document.defaultView.getComputedStyle){
				if(prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase()
				return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop)
			}

			if(elem.currentStyle){ // IE case
				return elem.currentStyle[prop];
			}
			return ''
		}
		var r = document.getElementById('r')
		alert('r.offsetWidth='+r.offsetHeight+' CSSheight='+getCSSVal(r,'height'))
	</script>
</body>
</html>
Ответить с цитированием