Показать сообщение отдельно
  #1 (permalink)  
Старый 15.03.2010, 15:20
Интересующийся
Отправить личное сообщение для gizmomy Посмотреть профиль Найти все сообщения от gizmomy
 
Регистрация: 10.02.2010
Сообщений: 14

Как IE рассчитывает offsetWidth/offsetHeight?
В общем такая ерунда: есть скрипт, который показывает модальное окошко. Скрипту можно явно указать размеры width и height или оставить 0 и 0, и тогда он рассчитывает размеры исходя из содержимого.
Вырезка:
function(c,w,h){
			if(!w||!h){
				var x=p.style.width, y=p.style.height;
				(typeof c == 'object') ? b.appendChild(c) : b.innerHTML=c;
				p.style.width=w?w+'px':''; p.style.height=h?h+'px':'';
				b.style.display='';
				w=parseInt(b.offsetWidth); h=parseInt(b.offsetHeight-12); // -12 для нормализации высоты
				b.style.display='none'; p.style.width=x; p.style.height=y;
			}else{
				(typeof c == 'object') ? b.appendChild(c) : b.innerHTML=c;
			}


Так вот… В ИЕ (даже ИЕ8), если запустить на локальной машине b.offsetWidth и b.offsetHeight рассчитываются правильно (например 300 и 190), а если запускать по сети — неправильно (660 и 210).

В объекте b есть просто DIV, внутри него DIV с «float: right» и DIV с «clear: right».

И вот если убрать этот DIV вообще из объекта b или убрать свойство «float: right», то тогда ИЕ считает b.offsetWidth нормально и локально и через сеть…

Объясните мне кто-нибудь — почему? Или хотя бы как ИЕ считает offsetWidth.
Ответить с цитированием