`
suko
  • 浏览: 74669 次
  • 性别: Icon_minigender_1
  • 来自: 富安
社区版块
存档分类
最新评论

IE6层不能遮挡住下拉框问题解决

Web 
阅读更多
在web应用开发中,经常会遇到使用层来显示数据的情况。而使用IE6来浏览页面的时候,弹出来的层无法遮住表单中的下拉框组件,导致其显示在层的上面,从而影响显示效果。解决的办法是在该层的下面再添加一个层,层的里面使用iframe填充,这样显示的时候就可以挡住下拉框了。(这里说一下原因:因为IE6中的下拉框组件为顶级元素,所以层无法将其挡住;而iframe却可以,我们可以利用这个特点来修正显示bug)
具体的做法如下:
function openNewDiv(_id,msg) {
	  	var m = "mask";
	  	if (docEle(_id)) document.removeChild(docEle(_id));
	  	if (docEle(m)) document.removeChild(docEle(m));
	  
	  	//用于遮盖select的层开始:s
	  	// 创建层
		var s=document.createElement('DIV');
		s.id = 'forHide';
		
		// 设置层的相关属性
		s.style.visibility='';
		
		// 定义层的样式
		s.style.position='absolute';
		s.style.left=(parseInt(document.body.scrollWidth) - 300) / 2 - 50 + "px"; // 屏幕居中
		s.style.top='100px';
		s.style.width='300px';
		s.style.height='400px';
		s.style.border='black 1px solid';
		s.style.backgroundColor='white';
		
		// 生成iframe
		var L=document.createElement('IFRAME');
		L.name='completionFrame';
		
		// 定义iframe的样式,宽高与s相同
		L.width=s.style.width;
		L.height=s.style.height;
		
		// 附加L到s
		s.appendChild(L);
		
		// 显示s
		document.body.appendChild(s);
                    //用于遮盖select的层结束
		 
                    //新激活数据显示图层
		  var newDiv = document.createElement("div");
		  newDiv.id = _id;
		  newDiv.style.position = "absolute";
		  newDiv.style.zIndex = "9999";
		  newDiv.style.width = "300px";
		  newDiv.style.height = "400px";
		  newDiv.style.top = "100px";
		  newDiv.style.left = (parseInt(document.body.scrollWidth) - 300) / 2 - 50+ "px"; // 屏幕居中
		  newDiv.style.background = "#EFEFEF";
		  newDiv.style.border = "1px solid #860001";
		  newDiv.style.padding = "5px";
		  //newDiv.innerHTML = "新激活图层内容";
		  newDiv.innerHTML = msg;
		  document.body.appendChild(newDiv);
		  // mask图层
		  var newMask = document.createElement("div");
		  newMask.id = m;
		  newMask.style.position = "absolute";
		  newMask.style.zIndex = "1";
		  newMask.style.width = document.body.scrollWidth + "px";
		  newMask.style.height = document.body.scrollHeight + "px";
		  newMask.style.top = "0px";
		  newMask.style.left = "0px";
		  newMask.style.background = "#000";
		  newMask.style.filter = "alpha(opacity=40)";
		  newMask.style.opacity = "0.40";
		  document.body.appendChild(newMask); 
		  // 关闭mask和新图层
		  //var newA = document.createElement("a");
		  //newA.href = "#";
		  //newA.innerHTML = "关闭激活层";
		  //newA.innerHTML = "关闭";
		  //newA.onclick = function() {
		  // document.body.removeChild(docEle(_id));
		  // document.body.removeChild(docEle(m));
		  // return false;
		  //}
		  //newDiv.appendChild(newA);
 	}

备注:上次写的时候忘掉了这两个方法:
 
var docEle = function() {
  return document.getElementById(arguments[0]) || false;
  }


function closeDiv() {
document.body.removeChild(docEle('forHide'));
  document.body.removeChild(docEle('newDiv'));
document.body.removeChild(docEle('mask'));
//return false;
  }

closeDiv()方法里的docEle参数根据实际情况自行填写,反正就是创建的层都要关闭掉。这个办法的局限性是要确保弹出层必须在下拉框的上面,以使得其可以遮住下拉框。为了达到这个目的,有时不得不变更页面的显示(具体就是改变层的位置)。
9
2
分享到:
评论
5 楼 bavnnsym 2009-08-04  
像三楼说的那样,,是可以的,,我之前也碰到这个问题,,也是在div层的下面再套一个iframe。。。iframe能遮住下拉列表
4 楼 suko 2009-08-04  
yukaizhao 写道
一句话的事情,就是创建一个和层一样大小,一样位置的iframe,放在层的下面,就可以遮住select了

对,就是这个意思了。
3 楼 yukaizhao 2009-08-03  
一句话的事情,就是创建一个和层一样大小,一样位置的iframe,放在层的下面,就可以遮住select了
2 楼 kaipingk 2009-08-03  
andyyehoo 写道
可以参考一下Struts2的日历控件的实现方式,比较优雅

怎么个优雅发?
andyyehoo 写道
可以参考一下Struts2的日历控件的实现方式,比较优雅

1 楼 andyyehoo 2009-07-31  
可以参考一下Struts2的日历控件的实现方式,比较优雅

相关推荐

    解决IE6中 Div层挡不住Select组件

    总之,解决IE6中`div`层无法遮挡`select`组件的问题需要对浏览器兼容性有深入理解,并且可能需要结合多种技术手段,包括CSS、JavaScript和可能的第三方库。在进行此类修复时,应考虑到代码的可维护性和未来可能的...

    ie6下select遮挡div

    标题“ie6下select遮挡div”指出的是一个典型的IE6特有的问题:当在网页上使用select下拉框时,它会覆盖在其他使用绝对或相对定位的元素(如div)之上,导致这些元素无法正常显示。这个问题对于设计美观且交互性强的...

    div等浮层在IE6下被下拉框遮挡的解决方法

    在IE6浏览器中,一个常见的问题是在页面上使用div创建的浮动层(通常用于弹出窗口或下拉菜单)会被网页中的下拉列表(DropDownList)遮挡。这是因为IE6处理下拉列表的方式不同,它将DropDownList视为系统级别的控件...

    在IE6中浮动层遮盖不住select的方法

    浮动层(通常通过CSS的`position: absolute`或`position: fixed`实现)常用于创建弹出窗口、提示信息等,但当浮动层与页面中的`<select>`下拉框重叠时,IE6往往无法正常遮盖住下拉框,导致交互体验不佳。 这个问题...

    QUI树形下拉框

    与传统的下拉框相比,QUI树形下拉框解决了在IE6中被浮动层遮挡的问题。 2. **简单易用**:只需引入必要的JS和CSS文件,然后在HTML中添加相应结构,如`<div class="selectTree" treeType="ztree" id="sel01">......

    IE6下div层被select控件遮住的问题解决方法

    在互联网的早期,尤其是IE6浏览器占据主导地位的时代,开发者们常常会遇到一个棘手的问题:在页面上,当一个`div`层位于`select`下拉框之上时,`select`控件会穿透`div`层显示出来,导致设计效果无法正常展现。...

    js 自定义的联动下拉框

    例如,使用setTimeout函数可以解决IE6中某些事件被触发两次的问题。 4. 回调函数的应用:在创建下拉框时,可以指定一个回调函数,这样每次选项变更时都会调用该函数。回调函数可以用来执行额外的操作,比如更新页面...

    模仿google下拉提示框输入框 Ajax 兼容火狐

    12.解决了在有滚动条时,ie6下被表单遮挡的问题 13.支持回调函数。当该插件执行完毕时,执行另外一个指定函数 14.可以自己设置提示框的长度 15.解决了无法获取用户填写默认值的问题 16.当输入框失去焦点时,提示框会...

    ajax模仿google提示输入框(兼容ff)

    此程序是模仿Google(sgguest)输入提示框所编写 ...此程序使用方便简单、易用灵活 且不限Asp、php、net ...12.解决了在有滚动条时,ie6下被表单遮挡的问题 13.支持回调函数。当该插件执行完毕时,执行另外一个指定函数

    飞飞模仿google下拉提示框输入框.rar

    12.解决了在有滚动条时,ie6下被表单遮挡的问题 13.支持回调函数。当该插件执行完毕时,执行另外一个指定函数 14.可以自己设置提示框的长度 15.解决了无法获取用户填写默认值的问题 16.当输入框失去焦点时,提示...

    combox 控件

    而且,QUI 树形下拉框解决了 IE6 中浮动层遮挡问题,确保了在各种浏览器下的良好展示。 2. **简单易用**:在页面上添加特定的 HTML 代码,如 `<div class="selectTree" treeType="ztree" id="sel01">...</div>`,并...

    CSS3关于z-index不生效问题的解决

    2.在有定位的情况下,该元素的z-index没有生效,是因为该元素的子元素后来居上,盖住了该元素,解决方式:将盖住该元素的子元素的z-index设置为负数 下拉框例子: 1.盖住的时候: 2.将下拉框的z-index设置为负数 ...

    jquery 遮罩层

    **描述**:当 `dialog` 在 IE6 浏览器下使用时,可能会遇到 z-index 无效的问题,导致 select 下拉框被遮挡。 **代码**: ```javascript // 启用 bgiframe 功能来解决 IE6 下的 z-index 问题。 $(".selector")....

    css设置z-index 失效的解决方法

    为了解决`z-index`失效的问题,首先检查元素是否已设置适当的定位属性。如果仍然存在问题,可能的原因包括: - 父元素的`z-index`:如果元素在一个具有较高`z-index`的父元素内,即使元素本身的`z-index`很高,也...

    无限菜单之 xml+popup 版(IE5.5+)

    可以不用担心被下拉框、flash、Iframe等这些东西遮挡; 一个Popup窗口打开后,当在它的区域以外点击或者另一个Popup窗口被打开时都会自动关闭; Popup窗口是没有焦点的; 用户不能改变Popup窗口大小; Popup...

    Ajax模仿google提示输入框 v1.8

    12.解决了在有滚动条时,ie6下被表单遮挡的问题 13.支持回调函数。当该插件执行完毕时,执行另外一个指定函数 ######V1.7解决问题############ 14.可以自己设置提示框的长度 15.解决了无法获取用户填写默认值的问题 ...

    Ajax 模仿google百度提示输入框 v1.8

    12.解决了在有滚动条时,ie6下被表单遮挡的问题 13.支持回调函数。当该插件执行完毕时,执行另外一个指定函数 ######V1.7解决问题############ 14.可以自己设置提示框的长度 15.解决了无法获取用户填写默认值的问题 ...

    飞飞模仿google(suggest)下拉提示框sggestV1.5

    2.兼容IE6,IE7,FF 3.支持input显示与value分离 4.支持下拉框按钮 5.支持显示结果数量 6.可以一个页面多次使用 7.模拟下拉框不会被select遮挡 8.调用更方便(内核已改为jq插件) 9.皮肤修改方便 ,外置的css样式文件...

Global site tag (gtag.js) - Google Analytics