代码之家  ›  专栏  ›  技术社区  ›  Select0r

Dojo.MarginBox在IE6中返回错误的高度

  •  0
  • Select0r  · 技术社区  · 16 年前

    我一直在尝试用“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;
    

    我希望它做的是:这三个内容分隔将动态地填充一些内容,所以我不知道“outerdiv”将以哪个高度结束。 “innerdiv”应该防止用户单击任何内容(同时仍然保持内容“灰显”但可见)。

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

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

    这是可行的,但是(惊喜!)不是IE6…

    我检查了由“边缘框”返回的高度,它在IE6中是很高的(事实上,它覆盖了“outerdiv”的高度加上“outerdiv”之外的其他分区-我不知道为什么会发生这种情况)。

    我发现:如果我在填充ContentDiv之前以编程方式(使用dojo.style)将“outerDiv”的高度设置为“0px”,它在IE6中工作,但在FF中,高度将保持为0px,并且在填充内容后不会更新,从而破坏了我的布局。

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

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

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

    问候语, 选择0R

    1 回复  |  直到 15 年前
        1
  •  0
  •   Select0r    15 年前

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

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