旧的重叠菜单,如何对 activeX 进行 z-index

Posted

技术标签:

【中文标题】旧的重叠菜单,如何对 activeX 进行 z-index【英文标题】:The good old overlapping menu, how to z-index an activeX 【发布时间】:2011-10-17 07:43:40 【问题描述】:

我的页面上有一个 ActiveX...我知道...ActiveX ... blarghhh!

出于某种逻辑业务原因,我们不得不使用 ActiveX,但问题是我不能让 ActiveX <object> 低于其他任何东西......

这太奇怪了!

Live plain example 和 Live example with iframe wrapper

您可以尝试该示例,但请记住 ActiveX 只能在 Internet Explorer 中运行,并且无论 ActiveX 是什么版本,它都会始终运行。

我面临的这个问题是重叠

positionz-index 一起玩什么也没做,我也没有更多的想法:-(

【问题讨论】:

【参考方案1】:

ActiveX 控件在 Internet Explorer 中呈现为 “windowed” 元素,而大多数其他元素(尤其是在较新版本的 IE 中)是 “windowless”。 Flash 有一个wmode 选项,用于绘制无窗口或有窗口,但根据我的经验,这很难实现,特别是如果对象是用 .NET 而不是 C++ 编写的。

所有有窗口的元素都将自己绘制在所有无窗口的顶部 元素,尽管容器的意愿。然而,开窗 元素之间确实遵循 z-index 属性, 就像无窗口元素遵循 z-index 属性一样 彼此。

所有无窗口元素都呈现在同一个 MShtml 平面上,并且 窗口元素绘制在单独的 MSHTML 平面上。您可以使用 z-index 在同一平面上操作元素但不混合和匹配 不同平面的元素。您可以重新排列 每个平面上的元素,但窗口平面始终绘制在顶部 无窗飞机。

> http://support.microsoft.com/kb/177378

我能想到两种可能的解决方案。你可以试试iframe "cutout" solution,它解释说你可以使用 iframe 来“剪掉”插件的一部分,以便下面的 HTML 显示出来。

第二种解决方案是在a popup object 中绘制弹出菜单。这些是在您的网页前面呈现的单独窗口,甚至可以超出文档的边界(有一些限制),主要缺点是它们没有阴影,因此这可能会使您的样式有点丑陋。

【讨论】:

因为它是一个 CRM 应用程序,所以我无法对下拉对象执行任何操作,但是,我可以对 ActiveX 主机页面执行任何操作,并且我确实使用 <iframe> 进行了包装,但这并没有给出我有任何优势:( - 请查看iframe wrapper demo。

以上是关于旧的重叠菜单,如何对 activeX 进行 z-index的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 对话框中替换/更新 ActiveX 控件

机械CAD中如何设置重叠图形消隐?

如何自定义Windows窗体的系统菜单?

如何让导航栏下拉菜单与身体重叠?

如何提供“退出”菜单项 [重复]

打开网页显示“该插件没有正常初始化”