Итак, у меня есть div, содержимое которого генерируется во время выполнения, изначально оно не имеет высоты, связанной с ним. Когда он сгенерирован в соответствии с firebug и из того, что я могу предупредить с помощью js, div все еще имеет высоту 0. Однако, глядя на свойства только для чтения с помощью firebug, я вижу, что он имеет высоту смещения 34. Именно это значение Я нуждаюсь. Надеюсь, это очевидно, но если это не так, это число является переменным, оно не всегда 38.
Итак, я подумал, что смогу получить это, используя jquery ...
$("#parentDiv").attr('offsetHeight');
или это с прямыми JS ...
document.getElementById("parentDiv").offsetHeight;
Но все, что возвращается, это 0. Имеет ли это какое-либо отношение к тому факту, что высота смещения в этом случае является свойством только для чтения? Как я могу получить эту высоту? Я имею в виду, что firebug как-то это выясняет, так что, похоже, я должен быть в состоянии.
Edit:
Вот пример того, как выглядит div прямо сейчас ...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN"><META http-equiv="Content-Type" content="text/html; charset=utf-8">
<HTML style="OVERFLOW: hidden; HEIGHT: 100%" xmlns="http://www.w3.org/1999/xhtml"><BODY><FORM id="aspnetForm" name="aspnetForm" action="blah.aspx" method="post"><DIV id="container">
<DIV id="ctl00_BodyContentPlaceHolder_Navigation" style="Z-INDEX: 1; LEFT: 1597px; POSITION: absolute; TOP: 67px">
<DIV class="TransparentBg" id="TransparentDiv" style="MARGIN-TOP: 10px; MARGIN-RIGHT: 10px; HEIGHT: 94px; TEXT-ALIGN: center">
</DIV>
<DIV class="Foreground" id="ForegroundId" style="MARGIN-TOP: 10px; MARGIN-RIGHT: 10px; TEXT-ALIGN: center">
<DIV id="ctl00_BodyContentPlaceHolder_Navigation1" style="WIDTH: 52px; COLOR: black; HEIGHT: 52px; BACKGROUND-COLOR: transparent; -moz-user-focus: normal">
<IMG style="FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale src='../images/image.gif'); CURSOR: pointer" height="52" hspace="0" src="..." width="52" />
</DIV>
<DIV id="ctl00_BodyContentPlaceHolder_UserControl" name="ctl00_BodyContentPlaceHolder_UserControl">
<IMG style="DISPLAY: block; VERTICAL-ALIGN: bottom; CURSOR: pointer" height="17" src="..." width="16" />
<IMG style="VERTICAL-ALIGN: top; CURSOR: pointer" height="17" src="..." width="16" />
</DIV>
</DIV>
</DIV>
</DIV></FORM></BODY></HTML>
Этот код генерируется элементом управления в отдельной библиотеке. Вот собственно код, создающий его на моей странице .aspx.
<blah:blahControl ID="control" runat="server" />
Хорошо, это немного отредактировано, но это намного больше HTML, чем я имел раньше. Div, на который я ссылался как «parentDiv», до этого назывался «ctl00_BodyContentPlaceHolder_UserControl». Этот код включает рассматриваемый div, его родного брата, родителя, деда и детей. Это почти прямая копия Firebug.
Обновление:
Я должен был упомянуть, что это делается в IE 7. В Firefox он, казалось, хорошо работал один раз, но теперь возвращает 0. Это дает какие-то новые идеи о возможных обходных путях или что-то еще?
... Вы все должны думать, что я чокнутый.
Обновление:
Немного стиля ...
.TransparentBg
{
background-color: white;
filter:alpha(opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
}
.Foreground
{
position: absolute;
top: 0px;
}