dojo.marginBox在IE6中返回错误的高度

时间:2010-01-27 14:02:30

标签: html internet-explorer-6 dojo height

我一直试图使用“dojo.marginBox”来获取DIV的高度,但我在IE6中的高度不断增加。

这是我的代码的一部分:

<div id="outerDiv">
  <div id="hiderDiv" class="hider"></div>
  <div id="contentDiv1"></div>
  <div id="contentDiv2"></div>
  <div id="contentDiv3"></div>
</div>

“hiderDiv”的CSS看起来像这样:

position: absolute; background-color: grey; opacity: 0.5; z-index: 1000;

我期望它做的是:三个内容-DIV将动态填充一些内容,所以我不知道“outerDiv”最终将以哪个高度。 “innerDiv”应该阻止用户点击任何内容(同时仍然保持内容“灰显”但可见)。

当内容高度在每个页面加载时动态变化时,我尝试在加载所有内容后检索“outerDiv”的高度,然后将该高度应用于“hiderDiv”以覆盖所有内容:

dojo.style("hiderDiv", "height", dojo.marginBox("outerDiv").h + "px");

哪个有效,但(惊喜!)不在IE6中......

我检查了“marginBox”返回的高度,它在IE6中的高位(实际上它覆盖了“outerDiv”的高度加上“outerDiv”之外的其他一些DIV - 我不知道,为什么发生)。

我发现:如果我在填充contentDivs之前以编程方式(使用dojo.style)将“outerDiv”的高度设置为“0px”,它可以在IE6中运行,但在FF中,高度将保持为0px并赢得'在内容填满之后进行更新,从而弄乱了我的布局。

我的解决方法,我不喜欢,这就是我写这篇文章的原因:

  if (dojo.isIE == 6)
    dojo.style("outerDiv", "height", "0px");

如果有人采用不同的方法(除了“放弃IE6支持”:),我会很感激。

问候, Select0r

1 个答案:

答案 0 :(得分:0)

好吧,由于这个问题一年多没有收到任何的注意,我会接受我的解决方法作为答案:)

  if (dojo.isIE == 6)
    dojo.style("outerDiv", "height", "0px");