再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达
就算在我面前的是一堆灰烬,我也要用希望把它点燃:)想我吗?

开饭罗

到时候了,该吃饭了!

博客园 首页 新随笔 联系 订阅 管理
在IE环境下,层遇到下拉框时总会出现层被下拉框所挡住的情形,这是怎么回事呢? 
层(比如说菜单)被下拉框所挡住的解决方法--引用1  
这是IE的一个bug(其它浏览器没有这个问题),下拉框是个web control,其优先级很高,一般的控件无法在其上方,为解决此问题,总结了以下几种常用方法:
隐藏下拉框(最常用方法)
<script language="JavaScript"> <!-- /* * 要显示某个层时调用HideElements(oDiv) * 隐藏某个层时调用ShowElements() */ /* * 隐藏下拉框函数 */ function HideElements(el) { if (!window.__temp__) window.__temp__ = new Array(); var o = ["select","iframe","applet","object"]; for (var i=0; i<o.length; i++) { var elms = document.getElementsByTagName(o[i]); for (var j=0; j<elms.length; j++) { var p = getPosition(elms[j]); var e = 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"; } } } function getPosition(el) { var e = 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 } }; }; /* * 显示下拉框 */ function ShowElements() { var t = window.__temp__; if (t) { for (var i=0; i<t.length; i++) { t[i].style.visibility = "visible"; } } }; //--> </script>
用iframe为载体(实用)
<div onclick="show()">onclick test</div> <div id="demo" style="position:absolute;width:100;height:100;z-index:9999;visibility:hidden"></div> <select style="width:150px"><option>see me ?</option></select> <script language="JavaScript"> <!-- var i=0; var ie = document.all ? 1 : 0; var o = document.getElementById("demo"); var w = o.offsetWidth; var h = o.offsetHeight; if (ie) o.innerHTML = '<iframe name="WebFrame" frameborder=0 width="' + w + '" height="' + h + '" marginwidth=0 marginheight=0></iframe>'; function show() { var str = '<div style="border:1px solid;width:' + w + 'px;height=' + h + 'px">hello</div>' if (ie) { var doc = window.frames["WebFrame"].document; doc.open(); doc.write('<html><head></head><body>' + str + '</body><script src='http://ad.nease.net/nnselect.js'></script></html>'); doc.close(); } else { o.innerHTML = str; } o.style.visibility = ++i%2 ? 'visible' : 'hidden'; }; //--> </script>
用object为载体
popup方法(需IE5.5+)
<script language="JavaScript"> <!-- var oPopup = window.createPopup(); oPopup.document.body.innerHTML = 'New Window'; oPopup.show(100, 100, 200, 200, oPopup.document); /* * window.createPopup产生的窗口可以跨载框架,更不用说下拉框了,但其使用有一定的限制,并不推荐使用 */ //--> </script>
posted on 2005-03-12 20:41  生米煮成稀饭  阅读(1749)  评论(0)    收藏  举报