解决IE6下DIV层被SELECT下拉框遮挡的问题
yqxbc 发布时间:08-27 来源:一起学编程 浏览:24次
  问题:

  WEB开发中,日历插件弹出层(包括其他显示数据的弹出层)无法遮挡住表单中的下拉框组件,导致其显示在层的上面。

 
  解决方法:

  因为IE6中的下拉框组件为顶级元素,所以层无法将其挡住,但是iframe可以,可以使用iframe来修正bug。在该层的下面再添加一个层,层的里面使用iframe填充,这样显示的时候就可以挡住下拉框了。

  操作:

  1、在弹出层里加入一段代码,是IE浏览器的话会在弹出层下面加一个iframe,注意它们之间的z-index关系:
document.write('<p id="ContainerPanel" style="display:none;"><p id="calendarPanel" style="position: absolute;display: none;z-index:3;');
document.write('background-color: #FFFFFF;border: 1px solid #CCCCCC;width:175px;font-size:12px;margin-left:25px;"></p>');


  IE下加入遮盖的iframe:
if(document.all){
    document.write('<iframe id="completionFrame" style="position:absolute;z-index:2;display:block;" scrolling="no" frameborder="no">121212</iframe>');
}
document.write('</p>');


  2、定位,相当于在弹出层下面放了一个相同位置,同样大小的iframe用于挡住下拉框:
//存在iframe说明在IE浏览器下,设置iframe遮盖层的宽高,位置属性赋值
if(this.getElementById("completionFrame")){//存在iframe的话
    var iframeWidth = $('#calendarPanel').css('width');//日历的宽度
    this.iframe = this.getElementById("completionFrame");
    this.iframe.style.left = "";//获取弹出层的坐标后赋值给iframe
    this.iframe.style.top = "";
    this.iframe.style.width = iframeWidth;//同理,赋值宽高
    this.iframe.style.height = "";
}


 
如果你有好的win10资讯或者win10教程,以及win10相关的问题想要获得win10系统下载的关注与报道。
欢迎加入发送邮件到657025171#qq.com(#替换为@)。期待你的好消息!