在页面中有一个 activex 控件以及一个按钮,其 onclick 会打开一个 ajax 模式弹出窗口。我面临的问题是,每当单击按钮时,ajax 弹出加载在 activex 控件后面,因此它是隐藏的。所以我根本无法使用该控件。我还没有找到合适的解决方案。我尝试了从 ajaxtoolkit 代码中删除浏览器检查条件的解决方案。但没有运气。我正在使用 Ajax 工具包版本 3.0.30512.1。如果有任何解决方案可以解决此问题,请告诉我。
3 回答
将 DIV 或任何 HTML 元素置于 ActiveX 之上的任何努力都没有效果。即使 ActiveX 的 z-index 高于 HTML 元素,它也始终保持在顶部。原因是资源管理器呈现其内容的方式。看
http://support.microsoft.com/default.aspx?scid=kb;en-us;177378。
有两种类型的控件:Windowed 和 Windowless 元素,它们在不同的平面上呈现。所有有窗口元素都将自己绘制在所有无窗口元素之上,尽管它们的容器希望如此。但是,有窗口元素确实遵循 z-index 属性,就像无窗口元素遵循 z-index 属性一样。
所有无窗口元素都呈现在同一个 MSHTML 平面上,而有窗口元素则绘制在单独的 MSHTML 平面上。您可以使用 z-index 来操作同一平面上的元素,但不能与不同平面中的元素混合和匹配。您可以重新排列每个平面上元素的 z 索引,但窗口平面始终绘制在无窗口平面的顶部。
在大多数情况下,标签是窗口化的。这就是为什么它总是保持领先。
我没有任何 ActiveX 经验,但这可能是一个简单的 CSS Z-Index 定位问题。您是否确保控件的 Z-Index 低于模式弹出窗口的 Z-Index?
我不确定,但我认为问题出在 ActiveX,它总是显示在最上面。
您可以在显示弹出窗口时尝试隐藏 ActiveX:
document.getElementById('activex').style.visibility = 'hidden';
然后当您关闭弹出窗口时再次显示 ActiveX:
document.getElementById('activex').style.visibility = 'visible';