Asp.net ModalPopupXtender不';在IE6框架布局上不工作

Asp.net ModalPopupXtender不';在IE6框架布局上不工作,asp.net,css,ajaxcontroltoolkit,modalpopupextender,Asp.net,Css,Ajaxcontroltoolkit,Modalpopupextender,我使用的“框架”布局与中的类似:一个div#top位于页面顶部,一个div#left位于左侧,一个div#main包含主要内容。#top和#left div包含导航菜单 现在,我想在content(#main)div中使用AjaxControlToolkit ModalPopupXtender来使用一个弹出div 这在IE8上很好用(其中#top、#left、#main都有position:fixed),但是当我在IE6上运行它时,模式背景只覆盖#main div-我需要它覆盖整个页面,包括#t

我使用的“框架”布局与中的类似:一个div#top位于页面顶部,一个div#left位于左侧,一个div#main包含主要内容。#top和#left div包含导航菜单

现在,我想在content(#main)div中使用AjaxControlToolkit ModalPopupXtender来使用一个弹出div

这在IE8上很好用(其中#top、#left、#main都有position:fixed),但是当我在IE6上运行它时,模式背景只覆盖#main div-我需要它覆盖整个页面,包括#top和#left导航div

查看ModalPopupXtender的脚本,它似乎在向上搜索父级层次结构,直到找到位置为相对或绝对的父级。在IE6渲染中,#main div有position:absolute,因为position:fixed不受支持,我想这可以解释发生了什么


对于在IE6上使其正常工作的最佳/最简单方法,有什么建议吗?理想情况下,无需修改ModalPopupXtender代码,但如果有必要,我会这样做,这是最好的解决方案。

我在中实现了解决方案的一个变体,它似乎解决了问题:

  • 对于IE6,有条件地将#main div position:static设置为左侧边距等于 #左分区的宽度。不幸的是,边缘顶部在IE6中似乎不起作用,所以

  • 对于IE6,在主div之前有条件地添加一个id为IE6的空div

  • 将ie6隔套div的高度设置为与顶部div相同的高度

这似乎是个诀窍

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>'Frames' using &lt;div&gt;s</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }

    html, body {
      height: 100%;
      overflow: hidden;
    }

    #top, #left, #main {
      position: fixed;
      overflow: hidden;
    }

    #top {
      top: 0;
      width: 100%;
      background-color: #ddd;
      height: 100px;
    }

    #left {
      left: 0;
      top: 100px;  /* move everything below #top */
      bottom: 0;
      background-color: #bbb;
      width: 120px;
    }

    #main {
      top: 100px;
      left: 120px;
      bottom: 0;
      right: 0;
      overflow: auto;
    }
  </style>
  <!--[if IE 6]>
  <style>
    #top, #left {
      position: absolute;
    }

    #ie6-spacer {
        height:100px;
    }

    #left {
      height: expression((m=document.documentElement.clientHeight-100)+'px');
    }

    #main {
      margin-left:120px;
      height: expression((m=document.documentElement.clientHeight-100)+'px');
      width: expression((m=document.documentElement.clientWidth-120)+'px');
    }
  </style>
  <![endif]-->
</head>
<body>
  <div id="top">Title<br /></div>
  <div id="left">LeftNav<br /></div>
  <!--[if IE 6]>
  <div id="ie6-spacer"></div>
  <![endif]--> 
  <div id="main">
    <p>
        Lorem ipsum ...<br />
        <!-- just copy above line many times -->
    </p>
  </div>
</body>
</html>

使用div的“Frames”
* {
保证金:0;
填充:0;
}
html,正文{
身高:100%;
溢出:隐藏;
}
#上、左、主{
位置:固定;
溢出:隐藏;
}
#顶{
排名:0;
宽度:100%;
背景色:#ddd;
高度:100px;
}
#左{
左:0;
顶部:100px;/*将所有内容移动到顶部下方*/
底部:0;
背景色:#bbb;
宽度:120px;
}
#主要{
顶部:100px;
左:120px;
底部:0;
右:0;
溢出:自动;
}
标题
左导航
Lorem ipsum…


很高兴你找到了这个解决方案,但我认为这不是一个好办法。我也使用了这类弹出窗口,并将一个模态对话框div与
#top
#left
#main
(等等)分开,具有100%的宽度和高度以及一个大的z索引,显示时覆盖了所有内容(有点透明)。在上面我放置了包含对话框面板的div。但不管怎样,它对你有效,所以谁在乎…@Marcel,谢谢你的评论,我当然愿意接受更好的解决方案。我的问题是,我使用的是ASP.NET WebForms和AjaxControlToolkit,因此对div的放置没有太多的控制。目前,我有一个基本布局的母版页(上/左/主div和导航),还有一个嵌套的母版页,用于使用弹出窗口的页面,其中包含一个主要内容的占位符ModalPopupXtender,以及弹出内容的占位符。因此,嵌套的母版页内容位于主分区内。应用程序开发人员只需专注于提供主内容和弹出内容。嗨,乔,我已经认为你有这样的限制。由于我对ASP.NET一无所知,所以我无法就如何使用WebForms和AjaxControlToolkit向您提供建议。但我已经说过:如果它没有坏,就不要修理它@马塞尔,再次谢谢你。我将遵循这个建议,特别是因为IE6只是用于传统支持,希望不久就会消失。