解决ActiveX插件Z-Index属性无效问题

摘要:

在Web开发中我们经常通过z-index设置多个元素之间的层叠关系,这种方式在多数情况下很有效,但是如果遇到有窗体元素时这种方式常常显得无能为力,今天我们就一块看一下如何有效的解决这个问题。

内容:

网页控件分为两大类:有窗体元素和无窗体元素。无窗体元素包括大多数html元素(例如div、table等)、无窗体的ActivX插件、iframe等;有窗体的元素包括<Object>元素、ActiveX插件、Plug-ins插件、Select元素等。所有的有窗体元素都会出现在无窗体元素之上,而有窗体元素和无窗体元素自身遵循z-index属性约束(注意使用z-index必须设置相应元素的position为absolute)。所有的无窗体元素都被浏览器渲染在同一个MSHTML平面,而有窗体元素被渲染在一个单独的MSHTML平面上。在同一个MSHTML平面当然可以通过设置z-index属性设置其层叠关系,但是对于不同平面上的元素,这个属性却无能为力。这里需要注意ActiveX插件,默认情况下VB和MFC控件是有窗体的,而ALT是无窗体的。

虽然上面说到ifame属于无窗体元素,但是在ie中它却横跨两边。无论是有窗体元素还是无窗体元素在显示时都会考虑iframe的顺序。因此如果要解决无窗体元素和有窗体元素之间的层叠关系时我们可以借助于iframe:通过把有窗体元素放到iframe中,然后设置iframe的z-index大于无窗体元素来解决二者层叠关系无法调整的问题;或者在无窗体元素内部放置一个iframe,设置其z-index小于无窗体元素并且其大小同无窗体元素相同;当然如果你觉得这两种方式都太麻烦的话可以使用jQuery的bgiframe插件,它的原理同第二种方式,不过使用起来就简单多了。

上面的方式或许可以解决大多数情况,但是实际应用中或多或少会给你造成一些额外的开发成本,如果你的项目中使用的Ext来进行前台开发,那么很幸运,Ext原生就对遮盖有窗体元素进行了支持。只需要在脚本开始处加上Ext.useShims=true;即可。

另外:多数情况下div被flash遮盖不用像上面这么麻烦,只需要设置wmode属性为transparent即可。

时间: 2024-11-01 10:23:03

解决ActiveX插件Z-Index属性无效问题的相关文章

index 属性

  返回字符位置,它是查找字符串中第一个成功匹配的开始位置.只读. RegExp.index 该属性的相关对象总是全局 RegExp 对象. 说明 index 属性是基于零的.其初始值为 -1,不论何时产生一个成功匹配,它的值都将改变. 示例 下例阐明了 index 属性的用法.该函数重复了字符串查找,并将字符串中每一个字的 index 和 lastIndex 值都打印出来. function RegExpTest(){ var ver = Number(ScriptEngineMajorVer

IE里button设置border:none属性无效解决方法

 本文说明了IE设置border:none属性无效的解决方法,下面给出了二种方法,可以根据情况参考使用 某个元素设置无边框,只需要给元素设置border:none即可,当然设置border:0效果一样,但实际上两者是有性能差别的  代码如下: border:none:边框设置为为none,不做任何处理: border:0:边框宽度设置为0像素,但是实际上border-color和border-style还是在渲染的.   然而在IE中,对于button和input元素确并不是这样,在IE6,7中

Android使用TextView,设置onClick属性无效的解决方法_Android

Android在布局文件中为View提供了onClick属性,使用方法如下: <TextView android:id="@+id/user" android:layout_width="@dimen/px_171" android:layout_height="fill_parent" android:onClick="iconClickListener" android:clickable="true&qu

Android使用TextView,设置onClick属性无效的解决方法

Android在布局文件中为View提供了onClick属性,使用方法如下: <TextView android:id="@+id/user" android:layout_width="@dimen/px_171" android:layout_height="fill_parent" android:onClick="iconClickListener" android:clickable="true&qu

巧用WinRAR+Javascript解决activeX的自动安装问题

先纠正一个观点,所谓自动安装并非强制安装,否则就变成流氓软件了,就算是silverlight,flash这类知名ActiveX,用户也有选择安装或是不安装的权利. 较正统的解决办法是提示用户设置IE权限,然后在object里加入codebase='ocx的下载路径',然后制作数字证书,个人觉得这样比较复杂. 我的办法: 1.先用js检测activex是否可用 代码  <object id='x' name='x' classid='clsid:82AB2103-26BC-4999-8DDE-DF

解决jquery插件冲突的问题

 本篇文章主要是对解决jquery插件冲突的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 今天做了一个例子,用jquery和jquery插件 lightbox做了图片浮动放大效果,没有任何问题.   然后再加了一个 导航栏的js,结构导航的js和图片浮动放大的js发生了冲突,   要么就只有导航栏的js有效,要么就只有图片浮动js有效.   结果上网搜了搜,解决办法有如下   jQuery.noConflict()   概述 运行这个函数将变量$的控制权让渡给第一个实现它的那个库

WebOffice在线编辑ActiveX插件(Excel,word等),兼容IE,FireFox,Chrome等浏览器

关于点聚的weboffice ActiveX插件的使用在IE下只需要安装对应weboffice.ocx插件即可实现在线文档编辑.对于非IE如谷歌.火狐浏览器来说就有些不同了的,如果想要兼容谷歌和火狐需要采用标准的NPAPI的开发的插件,具体的需要做以下几个步骤: 1.请安装下面链接地址的插件包 目前版本:官网 点击打开链接  2.安装插件包完成后调整加载weboffice的容器 [java] view plain copy print? <object  id="Control"

PHPcmsv9 get标签 sql语句limit无效及num和rows属性无效问题解决办法

PHPcms v9 get标签sql语句limit无效及num和rows属性无效问题至今也已经是一个老问题了,网络上也有一些表面的解决办法,但是逐日者并没有找到从底层,层模板标签解析及模板引擎代码上真正解决此问题的办法和解释.今天在使用get标签sql语句调用数据的时候当然也遇到了此问题,经过研究找到了问题的原因并且整理出本文希望对php爱好者有所帮助. 错误描述:我想从数据表中调取最新的6条数据!  代码如下 复制代码      <dl class="about_text1"&

多进程浏览器下如何调试ActiveX插件

概述: 现在主流的浏览器都是多进程浏览器,这却给ActiveX插件的调试带来了很大的不便! 最近在使用VS2010开发ActiveX插件,由于要在真实的浏览器环境下调试, 发现在附加到进程时想找到真正的宿主进程比较麻烦! 于时想到了一个工具"Process Explorer",使用它很容易就可以找到真正的宿主进程. 使用方法: 打开"Process Explorer",点击"Find Handle or DLL"按钮,打开"Proces