当层遇到下拉框时

在IE环境下,层遇到下拉框时总会出现层被下拉框所挡住的情形,这是怎么回事呢?这是IE的一个bug(其它浏览器没有这个问题),下拉框是个web control,其优先级很高,一般的控件无法在其上方,为解决此问题,总结了以下几种常用方法:
隐藏下拉框(最常用方法)
以下是代码片段:
<!--StartFragment--><scriptlanguage="JavaScript">
<!--
/*
*要显示某个层时调用HideElements(oDiv)
*隐藏某个层时调用ShowElements()
*/
/*
*隐藏下拉框函数
*/
functionHideElements(el)
{
if(!window.__temp__)window.__temp__=newArray();
varo=["select","iframe","applet","object"];
for(vari=0;i<o.length;i++)
{
varelms=document.getElementsByTagName(o[i]);
for(varj=0;j<elms.length;j++)
{
varp=getPosition(elms[j]);
vare=getPosition(el);
if(e.left+e.width>p.left&&e.left<p.left+p.width&&
e.top+e.height>p.top&&e.top<p.top+p.height)
{
window.__temp__[j]=elms[j];
elms[j].style.visibility="hidden";
}
}
}
functiongetPosition(el)
{
vare=el.offsetParent,x=el.offsetLeft,y=el.offsetTop;
while(e.tagName!='BODY')
{
x+=e.offsetLeft;
y+=e.offsetTop;
e=e.offsetParent;
}
return{
"left":x,
"top":y,
"width":el.offsetWidth,
"height":el.offsetHeight
}
};
};
/*
*显示下拉框
*/
functionShowElements()
{
vart=window.__temp__;
if(t){
for(vari=0;i<t.length;i++)
{
t[i].style.visibility="visible";
}
}
};

//-->
</script>
用iframe为载体(实用)
以下是代码片段:
<!--StartFragment--><divonclick="show()">onclicktest</div>
<divid="demo"style="position:absolute;width:100;height:100;z-index:9999;visibility:hidden"></div>
<selectstyle="width:150px"><option>seeme?</option></select>
<scriptlanguage="JavaScript">
<!--
vari=0;
varie=document.all?1:0;
varo=document.getElementById("demo");
varw=o.offsetWidth;
varh=o.offsetHeight;
if(ie)
o.innerHTML='<iframename="WebFrame"frameborder=0width="'+w+
'"height="'+h+'"marginwidth=0marginheight=0></iframe>';
functionshow()
{
varstr='<divstyle="border:1pxsolid;width:'+w+'px;height='+h+'px">hello</div>'
if(ie){
vardoc=window.frames["WebFrame"].document;
doc.open();
doc.write('<html><head></head><body>'+str+'</body></html>');
doc.close();
}else{
o.innerHTML=str;
}
o.style.visibility=++i%2?'visible':'hidden';
};
//-->
</script>
popup方法(需IE5.5+)
以下是代码片段:

<!--StartFragment--><scriptlanguage="JavaScript">
<!--
varoPopup=window.createPopup();
oPopup.document.body.innerHTML='NewWindow';
oPopup.show(100,100,200,200,oPopup.document);
/*
*window.createPopup产生的窗口可以跨载框架,更不用说下拉框了,但其使用有一定的限制,并不推荐使用
*/
//-->
</script>

你可能感兴趣的:(JavaScript,框架,浏览器,IE,J#)